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;
    }
};
相关推荐
yi0112 分钟前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
-dzk-17 分钟前
【多维动态规划】LC 1143.最长公共子序列
算法·动态规划
C++ 老炮儿的技术栈22 分钟前
char (*csConnectName)[256]; 和 char csConnectName [256] 有什么区别
java·c语言·开发语言·c++·人工智能·算法·c
Omics Pro32 分钟前
全新可重分析!代谢组质谱专用
数据库·人工智能·算法·机器学习·自然语言处理
Nebula_g33 分钟前
JavaSE加强:线程Thread(线程安全重点)
java·开发语言·jvm·算法·javase·技术栈
一只废狗狗狗狗狗狗狗狗狗34 分钟前
Network架构1——卷积神经网络CNN
人工智能·算法·cnn
是希燃亚40 分钟前
AI Agent 的未来,可能不是更强,而是更简单
算法·架构
alphaTao1 小时前
LeetCode 每日一题 2026/10/5-2026/10/11
算法·leetcode
liliangcsdn1 小时前
现金流指标的探索和分析
大数据·算法
wang09071 小时前
硬着头皮学数据结构和算法之Myers算法
数据结构·算法