Leetcode 二叉樹的minimum Depth
阿新 • • 發佈:2018-11-17
已知一個二叉樹,求它的高。空樹的樹高是0,下面的樹的樹高是3。
遞迴地計算一個節點的左右子樹的樹高,將高度設值為兩個孩子最大高度加1。看下面的虛擬碼和程式的詳細情況。
演算法:
package learn.java.cn.data.stru; class Node{ int var ; Node left,right; Node(int var) { this.var=var; left=right=null; } } public class BinTree_depth { Node root; public int Max_Depth(Node node) { if(node==null) return 0; else { int LDepth=Max_Depth(node.left); int RDepth=Max_Depth(node.right); return LDepth>RDepth?LDepth+1:RDepth+1; } } public static void main(String[] args) { BinTree_depth tree=new BinTree_depth(); tree.root=new Node(1); tree.root.left=new Node(2); tree.root.right=new Node(3); tree.root.left.left=new Node(4); tree.root.left.right=new Node(5); int max_depth=tree.Max_Depth(tree.root); System.out.println(max_depth); } }
maxDepth()
1. 如果樹為空,那麼返回0
2. 否則
(a) 遞迴得到左子樹的最大高度
例如,呼叫maxDepth( tree->left-subtree)
(b) 遞迴得到右子樹的最大高度
例如,呼叫maxDepth( tree->right-subtree)
(c) 對於當前節點,取左右子樹高度的最大值並加1。
max_depth = max(左子樹的最大高度, 右子樹的最大高度) + 1
(d) 返回max_depth