Balanced Binary Tree

来源:互联网 发布:身材好的女生啪啪知乎 编辑:程序博客网 时间:2024/06/06 09:14

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

思路: Write a getHeight() function. If a tree is balance tree, the left subtree and right tree must be a balance tree , and left height minus right height abstract must less than 2.

易错点: 注意null  和 0 的情况

法 2: 从下往上返回值,如果遇到 不平衡的 立刻返回 -1. time O(N) space O(lgN);


/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isBalanced(TreeNode root) {        if(root == null)            return true;        if(isBalanced(root.left) && isBalanced(root.right)){            if(Math.abs(getHeight(root.left) - getHeight(root.right)) < 2)                return true;            return false;// ---------        }else{            return false;        }    }        public int getHeight(TreeNode root){        if(root == null)            return 0;        return Math.max(getHeight(root.left), getHeight(root.right)) + 1;    }}
</pre><pre name="code" class="java"><pre name="code" class="java">/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isBalanced(TreeNode root) {        if(checkHeight(root) == -1 ){            return false;        }else{            return true;        }    }        public int checkHeight(TreeNode root){        if(root == null)            return 0;        int leftHeight = checkHeight(root.left);        if(leftHeight == -1){            return -1;        }        int rightHeight = checkHeight(root.right);        if(rightHeight == -1)            return -1;        if(Math.abs(leftHeight - rightHeight) > 1){            return -1;        }else{            return Math.max(leftHeight, rightHeight) + 1;        }    }}




0 0
原创粉丝点击