劍指offer 二叉樹的深度

2021-09-09 02:46:28 字數 568 閱讀 7075

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

考察二叉樹的遍歷方法,二叉樹可以深度優先遍歷(遞迴的方法求二叉樹的深度),也可以廣度優先遍歷(層次遍歷,也就是非遞迴的方法,求得二叉樹的深度,在這個過程中,也可以同時求得二叉樹的寬度)。

(1)如果有根節點,則深度為1;

(2)若根節點只有一棵子樹,則深度為子樹深度+1;

(3)若根節點有兩棵子樹,則深度為兩棵子樹深度的最大值+1;

實現:

使用佇列,層次遍歷二叉樹,上一層遍歷完成之後,深度depth+1,下一層的所有節點已經放在佇列中,此時佇列中的元素個數也是下一層的寬度,依次遍歷下一層,即可求得二叉樹的最大寬度,同時,在遍歷完一層之後深度的自增,可獲得二叉樹的深度。

實現:

這篇部落格的非遞迴實現思想是一樣的,寫法簡單易懂

劍指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 非常簡...