1. 程式人生 > >演算法題(三十二):判斷二叉樹是否是平衡二叉樹

演算法題(三十二):判斷二叉樹是否是平衡二叉樹

7. 判斷是否是BST

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

分析

可以用遞迴的方法,從下向上遍歷各個結點(後序遍歷),如果結點是滿足BST的條件則返回該結點的高度,如果不滿足則直接停止遍歷並返回false。

程式碼

public class IsBlanceTree {

	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);
		if(getDepth(root) != -1){
			System.out.println(true);
		}else{
			System.out.println(false);
		}
	}
	
	public static int getDepth(TreeNode root){
		if(root == null){
			return 0;
		}
		int left = getDepth(root.left);
		if(left == -1){
			return -1;
		}
		int right = getDepth(root.right);
		if(right == -1){
			return -1;
		}
		return Math.abs(left-right)>1?-1:1+Math.max(left, right);
	}

}