演算法題(三十二):判斷二叉樹是否是平衡二叉樹
阿新 • • 發佈:2018-11-24
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); } }