劍指offer 二叉樹的深度

2021-09-26 11:17:28 字數 665 閱讀 7361

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。(設只有根節點時,深度為1)

/*

struct treenode

};*/

class solution

};

方法一:遞迴法

思路:

class solution 

};

方法二:非遞迴法

經典的非遞迴層次遍歷:利用輔助佇列,先將頭節點入佇列,當佇列不空時出佇列的節點記為curr,當curr左節點不空時入佇列,其右節點不空時入佇列,如此迴圈即可。

求深度:構造變數n記錄當前層訪問到的節點數,width記錄當前層的總個數,每當訪問過一層層數depth++;

此種方法同時可以求最大寬度,訪問第幾層的第幾個節點,是一種通用方法!

class solution 

if(curr->right != null)

n++;

}depth++; //訪問完一層,深度加1

}return depth;

}};

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。如果二叉樹只有根節點那麼深度就是1,如果只有左子樹,那麼就是左子樹的深度加1就是整棵二叉樹的深度 如果只有右子樹,那麼二叉樹的深度就是右子樹的深度加1 如果既有左子樹又有右子樹,那...

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。思路 面對樹形結構,我們常用的演算法就是遞迴,根樹的每一塊子樹都可以看成一棵小的完整的樹,這位我們解題提供了很好的思路。如果一開始傳入的就是空的那麼深度就是0,如果不是0,那麼這顆...

劍指offer 二叉樹的深度

class solution def treedepth self,proot write code here if proot none return 0 return max 1 self.treedepth proot.left 1 self.treedepth proot.right 非常簡...