1. 程式人生 > >Leetcode 二叉樹的minimum Depth

Leetcode 二叉樹的minimum Depth

已知一個二叉樹,求它的高。空樹的樹高是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