1. 程式人生 > >演算法題(三十三):二叉樹的深度

演算法題(三十三):二叉樹的深度

題目描述

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

分析

演算法題(三十二):判斷二叉樹是否是平衡二叉樹相似。可以用遞迴的方法,從下向上遍歷各個結點(後序遍歷),返回左子樹和右子樹中深度最大的那個值。

程式碼

public class TreeDepth {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeNode root = new TreeNode(1);
		root.left = new TreeNode(1);
		root.left.left = new TreeNode(1);
		root.right = new TreeNode(1);
		root.right.left = new TreeNode(1);
		root.right.right = new TreeNode(1);
		root.right.right.left = new TreeNode(1);
		System.out.println(getDepth(root));
	}
	
	public static int getDepth(TreeNode root){
		if(root == null){
			return 0;
		}
		int left = getDepth(root.left);
		int right = getDepth(root.right);
		return 1+Math.max(left, right);
		
	}

}