Leetcode110.平衡二叉树

Problem: 110. 平衡二叉树

思路

自顶向下递归:1. 对每个节点,分别计算左右子树的高度 2. 检查当前节点是否平衡(左右高度差 ≤ 1) 3.递归检查左右子树是否平衡

复杂度

  • 时间复杂度: O(n2)O(n^2) O(n2)(最坏情况(链表状树):第1层:遍历 n 个节点;第2层:遍历 n-1 个节点...总计:n + (n-1) + ... + 1 = O(n²))
  • 空间复杂度: O(n)O(n)O(n)(递归栈深度 = 树的高度,最坏情况(链表):O(n),平衡树:O(log n))

Code(C++)

cpp 复制代码
/**
 * 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:
    int height(TreeNode* root){
        if(root==NULL){
            return 0;
        }else{
            return max(height(root->left),height(root->right))+1;
        }
    }
    bool isBalanced(TreeNode* root) {
        if(root==NULL){
            return true;
        }else{
            return abs(height(root->left)-height(root->right))<=1 && isBalanced(root->left) && isBalanced(root->right);
        }
    }
};
相关推荐
m0_7301151115 小时前
C++与Rust交互编程
开发语言·c++·算法
jay神15 小时前
基于 YOLOv8 的交通违规检测系统
人工智能·算法·yolo·目标检测·计算机视觉
旖-旎15 小时前
前缀和(连续数组)(7)
c++·算法·leetcode·前缀和·哈希算法
Allen_LVyingbo15 小时前
“拓扑量子计算被证伪”科学纠偏事件分析
算法·搜索引擎·全文检索·动态规划·创业创新·量子计算
马猴烧酒.15 小时前
【面试八股|操作系统】操作系统常见面试题详解笔记
java·linux·服务器·网络·数据结构·算法·eclipse
m0_7434703715 小时前
C++中的状态模式高级应用
开发语言·c++·算法
x_xbx15 小时前
LeetCode:704. 二分查找
算法·leetcode·职场和发展
im_AMBER15 小时前
Leetcode 146 爬楼梯 | 打家劫舍
数据结构·算法·leetcode
sheeta199815 小时前
LeetCode 每日一题笔记 日期:2025.03.25 题目:3546.等和矩阵分割
笔记·leetcode·矩阵
㓗冽15 小时前
2026.03.25(第一天)
数据结构