码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-Balanced Binary Tree

时间:2015-05-04 12:06:20      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

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.

解题思路

判断一棵树是否是平衡二叉树,平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。我们利用递归的思想,代码如下:
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        if(root==NULL) return true;
        if(abs(maxDepth(root->left)-maxDepth(root->right))>1) return false;
        return isBalanced(root->left)&isBalanced(root->right);
        
    }
    int maxDepth(TreeNode* root)
    {
        if(root==NULL) return 0;
        return max(maxDepth(root->left),maxDepth(root->right))+1;
    }
};


leetcode-Balanced Binary Tree

标签:

原文地址:http://blog.csdn.net/sinat_24520925/article/details/45477049

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!