题解 | #36.判断是不是平衡二叉树#

判断是不是平衡二叉树

http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

先求出每一个结点的高度->getHeight(root)

递归地判断是否为平衡二叉树->isBalanced(root)

function IsBalanced_Solution(pRoot)
{
  function getHeight(root){
    if(root == null)  return 0;
    root.height = Math.max(getHeight(root.left), getHeight(root.right)) + 1;
    return root.height;
  }
  function isBalanced(root){
    if(root == null)
      return true;
    if(root.left==null && root.right==null)
      return true;
    if(root.left==null)
      return root.right.height<=1 && isBalanced(root.right);
    if(root.right==null)
      return root.left.height<=1 && isBalanced(root.left);
    
    return Math.abs( root.left.height - root.right.height ) <=1 && isBalanced(root.left) && isBalanced(root.right);
  }
  getHeight(pRoot);
  return isBalanced(pRoot);
  
}
module.exports = {
    IsBalanced_Solution : IsBalanced_Solution
};
全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务