C/C++教程

110.balanced-binary-tree 平衡二叉树

本文主要是介绍110.balanced-binary-tree 平衡二叉树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

获取左右子树的高度,如果左右子树高度差小于等于1,则判断左右子树的左右子树,如此递归下去。

class Solution {
  public:
    int getDp(TreeNode *root) {
        if (root == nullptr)
            return 0;
        int ldp = getDp(root->left);
        int rdp = getDp(root->right);
        return (ldp < rdp ? rdp : ldp) + 1;
    }
    bool isBalanced(TreeNode *root) {
        if (root == nullptr)
            return true;

        int ldp = getDp(root->left);
        int rdp = getDp(root->right);
        if (ldp - rdp <= 1 && ldp - rdp >= -1) {
            bool l = isBalanced(root->left);
            bool r = isBalanced(root->right);
            return l && r;
        } else
            return false;
    }
};
这篇关于110.balanced-binary-tree 平衡二叉树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!