二叉樹的深度

2022-07-16 17:09:11 字數 1248 閱讀 4391

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

題目格式要求:

/**

public class treenode }*/

public

class

solution

}

解題思路:前不久剛學了動態規劃,在這裡「假裝」用動態規劃分析一下,為什麼是假裝呢?因為我也不知道自己是不是用的動態規劃~。感覺挺像的。。。

(關於動態規劃,再次推薦一下這篇文章:漫畫:什麼是動態規劃

)動態規劃有三個分析條件  ---------  最優子結構,邊界,狀態轉移公式

1 . 首先看一下最優子結構。

對於根節點來說如果已經知道了左子樹和右子樹的節點,那麼我們就可以得到根節點的深度是4.

再抽象一下,把2和3換成是x和y

那麼根節點的深度就應該是

再用同樣的方法去推導左子樹和右子樹,就可以得到相應的關係式了。

2、狀態轉移公式

從上面的分析不難看出狀態轉移公式可以寫成下面這個樣子。

depth(root) =( depth(root.left) > depth(root.right) ?  depth(root.left) : depth(root.right) ) + 1

3、邊界條件

a. 如果root是null,那就代表沒有這個節點,返回0

b. 如果root的左右孩子節點都為空,說明這是乙個葉子節點,那麼它的深度就返回1

最後的**:

public

class

solution

if(root.left == null && root.right == null)

int left =treedepth(root.left) ;

int right =treedepth(root.right) ;

return (left > right ? left : right) + 1;}}

二叉樹的深度 二叉樹的深度

題目描述輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。及測試用例 單步除錯檢視過程 public class solution19 拿到左子樹的最大深度 int leftdep treedepth root.left 拿到右子...

二叉樹的深度 二叉樹的深度 二叉樹最大寬度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 給定二叉樹 3,9,20,null,null,15,7 返回它的最大深度 3 根節點加上左右子樹的最大深度就是樹的最大深度。如下 class solution ...

二叉樹之 二叉樹深度

二叉樹深度 獲取最大深度 public static int getmaxdepth treenode root 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...