平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题的递归逻辑不复杂,我们用递归写
-
确定函数返回值和参数
因为要判断左右子树的高度差,所以应该是以int为返回值。参数为根节点
public int getHeight(TreeNode root) {...}
-
确定终止条件
-
当遍历到空节点的时候终止
-
当左右子树不平衡的时候终止
if(root == null) return 0; if( |左子树高度- 右子树高度| > 1) return -1;//以-1作为不平衡的标志 if(左子树高度==-1 || 右子树高度==-1) return -1;
-
-
确定函数体
class Solution { public boolean isBalanced(TreeNode root) { //用递归 return getHeight(root) != -1; } public int getHeight(TreeNode root) { if (root == null) return 0; int left = getHeight(root.left); if (left == -1 )return -1; int right = getHeight(root.right); if (right == -1) return -1; if (Math.abs(left-right) > 1) return -1; return Math.max(left, right) + 1; } }