【LeetCode 33】110.平衡二叉树

简介: 【LeetCode 33】110.平衡二叉树

一、题意

二、思路

这道题需要用到二叉树高度这个概念,这里需要强调一下概念:

  • 二叉树节点的深度:指从根节点到该节点的最长简单路径边数的条数。
  • 二叉树节点的高度:指从 该节点到叶子节点的最长简单路径边的条数。

2.1递归法

同样是三部曲:

这里用 -1来标记树不符合平衡树的规则。

class Solution {
public:
    //1.明确函数参数和返回值
    int getHeight(TreeNode* node)
    {
        //2.明确终止条件
        if(node==NULL) return 0;
        //3.明确单层递归逻辑
        //分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则则返回-1,表示已经不是二叉平衡树了。
        int leftHeight=getHeight(node->left);
        if(leftHeight==-1) return -1;
        int rightHeight=getHeight(node->right);
        if(rightHeight==-1) return -1;
        
        int result;
        if(abs(rightHeight-leftHeight)>1)
        {
            result=-1;
        }else{
            result=1+max(leftHeight,rightHeight);
        }
        return result;
    }
    bool isBalanced(TreeNode* root) {
        if(getHeight(root)==-1)
        {
            return false;
        }else{
            return true;
        }
    }
};


目录
相关文章
|
5月前
leetcode代码记录(平衡二叉树
leetcode代码记录(平衡二叉树
34 0
|
2月前
|
算法 Java 关系型数据库
leetcode110-平衡二叉树
文章通过LeetCode第110题"平衡二叉树"的解题过程,深入讲解了平衡二叉树的定义、树的高度概念,并提供了使用后序遍历算法判断二叉树是否平衡的Java代码实现,强调了理解理论知识和实践编码的重要性。
|
2月前
|
Python
【Leetcode刷题Python】110. 平衡二叉树
LeetCode第110题"平衡二叉树"的Python解决方案,通过计算二叉树的高度并判断任意两个子树的高度差是否不超过1来确定树是否平衡。
17 2
|
4月前
|
SQL 算法 数据挖掘
力扣110:平衡二叉树
力扣110:平衡二叉树
|
11月前
|
算法
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
48 0
LeetCode | 110. 平衡二叉树
LeetCode | 110. 平衡二叉树
|
5月前
|
Java C++ Python
leetcode-110:平衡二叉树
leetcode-110:平衡二叉树
44 0
LeetCode刷题Day14——二叉树(完全二叉树、平衡二叉树、二叉树路径、左叶子之和)
一、完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数
|
11月前
|
算法
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
39 0
|
12月前
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
27 0