leetcode 110

110: 平衡二叉树

平衡二叉树 是指该树所有节点的左右子树的高度相差不超过 1。

基于以下性质:当前树的深度等于左子树的深度与右子树的深度中的最大值 +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) {
        auto recur=[&](this auto&& recur,TreeNode* node)->int{
            if(node==nullptr) return 0;
            int left=recur(node->left);
            if(left==-1) return -1;
            int right=recur(node->right);
            if(right==-1) return -1;
            return abs(left-right)<=1 ? max(left,right)+1:-1;
        };

        return recur(root)!=-1;
    }
};
相关推荐
小O的算法实验室5 小时前
IEEE TASE,基于MPC的多无人机协同搜索竞争群体优化方法
算法
小飞学编程...5 小时前
【哈希表】
数据结构·哈希算法·散列表
Tbisnic6 小时前
BGE-M3 算法详解:从模型架构到三种检索方式的数学原理
算法·自然语言处理·大模型·bert·transformer·注意力机制
Brilliantwxx6 小时前
【算法从零到千】【55-58】哈希位图+常见数学运算 接口
算法
空堂与归7 小时前
用户分群找不到规律?用K-Means聚类算法自动发现数据模式
算法·机器学习·kmeans·聚类
动词ing8 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习8 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
一只小小的芙厨8 小时前
基础数论总结
笔记·学习·算法
动词ing9 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构
夜不会漫长10 小时前
C++入门(1)
开发语言·c++·算法