題目:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
思路:所謂的深度是指從根結點到葉子結點的最長的路徑的長度,即路徑上的結點的數目。分析問題,輸入根結點root,求它的深度需要先求出root左右子樹的深度,取其較大值,然後加1就是當前樹的深度了,即顯然這是乙個對二叉樹後序遍歷進行改編的遞迴過程,設計乙個遞迴函式,輸入個結點root,返回這個根結所在的樹的深度。
遞推關係是:
leftdepth=this.process(root.left);
rightdepth=this.process(root.right);
returnmath.max(leftdepth, rightdepth)+1;
邊界條件:
if(root==null)return 0;
即對於空子樹結點,顯然它的深度是已知的,為0,最為邊界條件或者初始條件。
這是乙個基本的遞迴函式構造過程,很簡單,只有乙個返回值。
//求深度,先求左右子樹的深度,再求當前樹的深度。對後序遍歷的遞迴過程進行改造即可
public class solution
//設計乙個遞迴函式用來求出一棵二叉樹的深度
private int process(treenode root)
}
二叉樹之 二叉樹深度
二叉樹深度 獲取最大深度 public static int getmaxdepth treenode root 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...
二叉樹的深度 二叉樹的深度
題目描述輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。及測試用例 單步除錯檢視過程 public class solution19 拿到左子樹的最大深度 int leftdep treedepth root.left 拿到右子...
二叉樹的深度 二叉樹的深度 二叉樹最大寬度
題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 給定二叉樹 3,9,20,null,null,15,7 返回它的最大深度 3 根節點加上左右子樹的最大深度就是樹的最大深度。如下 class solution ...