当前位置: 首页 > article >正文

力扣110:判断二叉树是否为平衡二叉树

利用二叉树遍历的思想编写一个判断二叉树,是否为平衡二叉树

示例 :

输入:root = [3,9,20,null,null,15,7]
输出:true

思想:

代码:

int getDepth(struct TreeNode* node) {
    //如果结点不存在,返回0
    if(node==NULL)
        return 0;
    //求出右子树深度
    int rightDepth = getDepth(node->right);
    //求出左子树深度
    int leftDepth = getDepth(node->left);
    //返回左右子树中的较大值+1
    return rightDepth > leftDepth ? rightDepth + 1 : leftDepth + 1;
}

bool isBalanced(struct TreeNode* root) {
    //递归结束条件为:传入结点为NULL,返回True
    if(root==NULL)
        return true;
    //求出左右子树的深度
    int leftDepth = getDepth(root->left);
    int rightDepth = getDepth(root->right);
    //若左右子树绝对值差距大于1,返回False
    if(abs(leftDepth - rightDepth) > 1 )
        return false;
    //检查左右子树是否为平衡二叉树
    return isBalanced(root->right) && isBalanced(root->left);
}

时间复杂度O(n);空间复杂度O(1) 


http://www.kler.cn/news/336907.html

相关文章:

  • 【大模型理论篇】大模型相关的周边技术分享-关于《NN and DL》的笔记
  • 【Easy RL】Easy RL蘑菇书全书学习笔记
  • MySQL基础之DQL
  • CSS Style position: absolute 的含义
  • Web安全 - 重放攻击(Replay Attack)
  • 助动词的分类及其缩略形式
  • 在 Qt 中构建和解析多层嵌套的 JSON 数据
  • 《计算机原理与系统结构》学习系列
  • XSY5053 数(number)
  • k8s-pod的管理及优化设置
  • 快速部署vue项目
  • Bloom Filter 布隆过滤器
  • 服务器虚拟化
  • python数据分析与可视化工具介绍-matplotlib库
  • Python入门--判断语句
  • c++包管理工具conan
  • 图论day55|深度优先搜索理论基础、98. 所有可达路径(卡码网)
  • 新课发布|鸿蒙HarmonyOS Next商城APP应用开发实战
  • 【Java数据结构】栈 (Stack)
  • 从建国时期影视剧看老式自行车先滑行再上车的编程关联