LeetCode 之 Balanced Binary Tree

原创 2013年12月05日 17:41:58

原题:

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.

做这个题时,有一个盲点,就是不能只判断root的左右子树的高度,而是要判断每一个节点的左右子树的高度差,只有在这个树中,有一个节点的左右子树的高度差>1,就需要返回false,因此需要记录这棵树每个节点的情况,我的方法:

1 :用递归的方法,假设每次判定到的节点为current

2 : 判断current的左右子树的高度,如果高度差<=1,则返回max(坐,右)+1;如果高度差大于1,或者左右子树有一个的高度差为-1,则返回-1(KEY),用来记录,说明这棵树已经是非平衡的了。。。

代码如下(60 ms):

class Solution {
public:
    bool isBalanced(TreeNode *root) {
        if (!root) return true;
        else {
            int left = height(root->left);
            int right = height(root->right);
            if(left==-1||right==-1) return false;
            return (left-right)>1 || (left-right)<-1 ? false:true;
        }
    }
    int height (TreeNode * root){
        if(!root) return 0;
        else if(root->left==NULL && root->right==NULL){
            return 1;
        }
        else {
            int left = height(root->left);
            int right= height(root->right);
            if(left ==-1 || right == -1 || left-right>1 || right-left>1) return -1;
            return left>right?left+1:right+1;
        }
        
    }
};

【LeetCode】Balanced Binary Tree 解题报告

【题目】 Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bi...
  • ljiabin
  • ljiabin
  • 2014年10月12日 20:15
  • 5815

LeetCode(110)Balanced Binary Tree

题目如下: 分析如下: 之前尝试一边计算深度,一边做判断,发现这是无法实现的。因为bool型的返回变量说明了返回值没有深度信息,而如果没有深度信息,那么就无法判断左子树和右子树的深度差是否为1.所...
  • feliciafay
  • feliciafay
  • 2014年01月16日 07:46
  • 5070

【leetCode】 Balanced Binary Tree python版实现

原题链接Balanced Binary Tree实现原理解析 该题比较简单,主要思想是递归的判断左右子树的高度不大于1即可,注意异常处理 python代码实现class Solution(obje...
  • hongkangwl
  • hongkangwl
  • 2016年06月18日 16:56
  • 724

Leetcode_110_Balanced Binary Tree

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42218839 Given a binary tre...
  • pistolove
  • pistolove
  • 2014年12月28日 21:35
  • 1406

LeetCode 110. Balanced Binary Tree 递归求解

题目链接:https://leetcode.com/problems/balanced-binary-tree/  110. Balanced Binary Tree My S...
  • bruce128
  • bruce128
  • 2016年02月23日 16:28
  • 1321

leetcode 110 Balanced Binary Tree C++

一次过,但是写出来的代码并不是最高效。 class Solution { public: bool isBalanced(TreeNode* root) { if (!roo...
  • a2331046
  • a2331046
  • 2016年05月28日 20:19
  • 239

LeetCode-Balanced Binary Tree && 二叉树的深度 && 二叉树的平衡

作者:disappearedgod 文章出处:http://blog.csdn.net/disappearedgod/article/details/24474235 时间:2014-5-20 ...
  • disappearedgod
  • disappearedgod
  • 2014年05月20日 13:16
  • 1026

[LeetCode]--110. Balanced Binary Tree

Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary t...
  • bug_moving
  • bug_moving
  • 2016年10月04日 15:01
  • 623

Leetcode全树类问题

Leetcode全树类问题。算法总的来说就是递归(Stack, DFS)和广度优先(Queue, BFS)两种。下面有关二叉树类linked list的题目,若不加特别说明......
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月04日 03:03
  • 8729

Leetcode-标签为Tree 110. Balanced Binary Tree

判断二叉树是否为平衡二叉树。
  • daigualu
  • daigualu
  • 2017年04月23日 09:49
  • 1394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode 之 Balanced Binary Tree
举报原因:
原因补充:

(最多只允许输入30个字)