39、平衡二叉树

来源:互联网 发布:linux怎么显示中文 编辑:程序博客网 时间:2024/06/01 03:57

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。

平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

思路:用到了上一个题中计算深度的方法,仍然是递归调用。
专门写一个函数实现计算深度,这个函数也递归实现。

代码:

class Solution {public:    bool IsBalanced_Solution(TreeNode* pRoot) {        if(pRoot==NULL)            return true;        int left = getDepth(pRoot->left);        int right = getDepth(pRoot->right);        int dif = abs(left-right);        if(dif > 1)            return false;        else            return (IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right));    }    int getDepth(TreeNode* pRoot){        if(pRoot==NULL)            return 0;        int left = getDepth(pRoot->left);        int right = getDepth(pRoot->right);        return (left > right ? left+1 : right+1);    }};
原创粉丝点击