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;
    }
};
相关推荐
图码6 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
handler016 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
minglie17 小时前
实数列的常用递推模式
算法
我星期八休息7 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表
代码小书生7 小时前
math,一个基础的 Python 库!
人工智能·python·算法
AI科技星7 小时前
全域数学·数术本源·高维代数卷(72分册)【乖乖数学】
人工智能·算法·数学建模·数据挖掘·量子计算
生成论实验室7 小时前
《事件关系阴阳博弈动力学:识势应势之道》第一篇:生成正在发生——从《即事经》到事件-关系网络
人工智能·科技·算法·架构·创业创新
漂流瓶jz7 小时前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
leoufung7 小时前
LeetCode 76:Minimum Window Substring 题解与滑动窗口思维详解
算法·leetcode·职场和发展
小O的算法实验室7 小时前
2026年IEEE TETCI,山区环境下基于双种群进化的协同无人机巡逻任务协同优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进