• 110. 平衡二叉树


    自底向上递归的做法类似于后序遍历,对于当前遍历到的节点,先递归地判断其左右子树是否平衡,再判断以当前节点为根的子树是否平衡。

    如果一棵子树是平衡的,则返回其高度(高度一定是非负整数),否则返回 −1。如果存在一棵子树不平衡,则整个二叉树一定不平衡。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        bool isBalanced(TreeNode* root) {
            return dfs(root) >= 0;
        }
    
        int dfs(TreeNode* root) {
            if (!root) return 0;
            
            int leftDepth = dfs(root->left);
            if (leftDepth == -1) return -1;
            
            int rightDepth = dfs(root->right);
            if (rightDepth == -1) return -1;
            
            if (abs(leftDepth - rightDepth) > 1)
                return -1;
            
            return max(leftDepth, rightDepth) + 1;
        }
    };
    
  • 相关阅读:
    任务18格式化
    任务17分区
    任务16 BIOS与CMOS
    任务15硬件组装过程说明
    任务14选配机箱
    任务13选配电源
    任务12选配显卡
    任务11选配机械硬盘
    任务10选配固态硬盘
    Android自定义控件:动画类(八)----ObjectAnimator基本使用
  • 原文地址:https://www.cnblogs.com/fxh0707/p/15093522.html
Copyright © 2020-2023  润新知