题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路
从下往上遍历,如果子树是平衡二叉树,则返回子树的高度;如果发现子树不是平衡二叉树,则直接停止遍历,这样至多只对每个结点访问一次。
public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return Depth(root) != -1; } public int Depth(TreeNode root) { if(root == null) return 0; int left = Depth(root.left); if(left == -1)return -1; int right = Depth(root.right); if(right == -1)return -1; return Math.abs(left-right)>1? -1 : 1+Math.max(left, right); } }