• 力扣第110题 平衡二叉数 c++ 树 深度优先搜索 二叉树


    题目

    110. 平衡二叉树

    简单

    给定一个二叉树,判断它是否是高度平衡的二叉树。

    本题中,一棵高度平衡二叉树定义为:

    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

    示例 1:

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

    示例 2:

    输入:root = [1,2,2,3,3,null,null,4,4]
    输出:false
    

    示例 3:

    输入:root = []
    输出:true
    

    提示:

    • 树中的节点数在范围 [0, 5000] 内
    • -104 <= Node.val <= 104

    思路和解题方法

            首先,我们需要了解平衡二叉树的定义:对于任意一个节点,其左子树和右子树的高度差不超过1。

            在这段代码中,我们定义了一个递归函数getHeight,用于计算以某个节点为根节点的二叉树的高度并判断是否为平衡二叉树。其中,如果节点为空,则返回0表示该节点为叶节点;否则,分别递归计算它的左子树和右子树的高度。如果左子树或右子树不为平衡二叉树,则直接返回-1表示以该节点为根节点的二叉树不是平衡二叉树。如果左右子树的高度差超过1,则也返回-1。最后,如果满足平衡二叉树定义,则返回以该节点为根节点的二叉树的高度,即左右子树中较大的高度加上1。

            在主函数isBalanced中,我们调用getHeight函数来计算整棵二叉树的高度。如果返回值为-1,则整棵树不是平衡二叉树,返回false;否则整棵树为平衡二叉树,返回true

    复杂度

            时间复杂度:

                   O(nlogn)

            空间复杂度

                    O(n)

    c++ 代码

     ​
    
    1. class Solution {
    2. public:
    3. // 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1
    4. int getHeight(TreeNode* node) {
    5. if (node == NULL) { // 如果节点为空,则返回0,表示该节点为叶节点
    6. return 0;
    7. }
    8. int leftHeight = getHeight(node->left); // 递归计算左子树的高度
    9. if (leftHeight == -1) return -1; // 左子树不是平衡二叉树,则直接返回-1
    10. int rightHeight = getHeight(node->right); // 递归计算右子树的高度
    11. if (rightHeight == -1) return -1; // 右子树不是平衡二叉树,则直接返回-1
    12. return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight); // 如果满足平衡二叉树的定义,则返回以该节点为根节点的二叉树的高度
    13. }
    14. bool isBalanced(TreeNode* root) {
    15. return getHeight(root) == -1 ? false : true; // 如果返回-1,则整棵树不是平衡二叉树,否则整棵树是平衡二叉树
    16. }
    17. };

    觉得有用的话可以点点赞,支持一下。

    如果愿意的话关注一下。会对你有更多的帮助。

    每天都会不定时更新哦  >人<  。

  • 相关阅读:
    Gitee 图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源
    嵌入式软件架构设计-函数调用
    【数据分析入门】Seaborn[散点图、条形图、计数图、热力图、箱型图、小提琴图]
    查看Android应用方法耗时
    无损剪切音视频文件的跨平台工具: LosslessCut | 开源日报 0908
    react事件机制
    [附源码]SSM计算机毕业设计智慧教学平台JAVA
    LeetCode第20题——有效的括号
    如何解决MidJourney错过付费后被暂停
    说透 Nacos 一致性协议
  • 原文地址:https://blog.csdn.net/jgk666666/article/details/133657422