C++之平衡二叉树的判定(25)---《那些奇怪的算法》

来源:互联网 发布:js设置编码为utf8 编辑:程序博客网 时间:2024/06/14 12:14

我们知道,平衡二叉树要求二叉树的左右子树的深度差不超过1,即可以取值为{-1,0,1},同时,空树也为平衡二叉树,知道了这些,我们可以方便的进行平衡二叉树的判定,实现代码如下:

即定义一个求树的深度的一个函数,我们使用递归进行定义,然后我们定义判定树是否为平衡二叉树的函数,同样使用递归定义,因为平衡二叉树的左右子树一定为平衡二叉树!

class Solution {public:    bool isBalanced(TreeNode *root) {        if(!root) return true;         else return (abs(depth(root->left)-depth(root->right))<2)&&isBalanced(root->left)&&isBalanced(root->right);    }    int depth(TreeNode* root){        if(!root) return 0;        if(!root->left&&!root->right) return 1;        int left=depth(root->left)+1;        int right=depth(root->right)+1;        return max(left,right);    }};
阅读全文
0 0
原创粉丝点击