110. 平衡二叉树

✅做题思路or感想:

  • 用递归后序遍历二叉树,然后从底部开始记录高度为0,然后往上加1。

  • 每一次操作节点的时候比较左右子树的高度,如果有一棵树不符合条件,则直接把-1返回到最顶的根节点

  • class Solution {
    public:
        int getDepth(TreeNode* cur) {
            if (cur == nullptr)return 0;	//节点触底后,从高度为0开始计数
            //检验左右子树是否符合条件
            int leftDepth = getDepth(cur->left);
            if (leftDepth == -1) return -1;
            int rightDepth = getDepth(cur->right);
            if (rightDepth == -1)return -1;
            if (abs(leftDepth - rightDepth) > 1)return -1;
            else {
                //若符合条件,则往上+1
                return max(leftDepth, rightDepth) + 1;
            }
        }
        bool isBalanced(TreeNode* root) {
            if (getDepth(root) != -1)return true;
            else return false;
        }
    };
    
posted @   北原春希  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示