判断是否为AVL树

leetcode题目链接

自顶向下的递归

cpp 复制代码
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        if(root)
            return abs(maxDepth(root->left) - maxDepth(root->right)) <= 1 && isBalanced(root->left) && isBalanced(root->right);
        return true;
    }
    int maxDepth(TreeNode* root){
        if(root)
            return max(maxDepth(root->left),maxDepth(root->right)) + 1;
        return 0;
    }
};

自底向上的递归

cpp 复制代码
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        return height(root) >= 0;
    }

    int height(TreeNode* root){
        if(root == NULL)
            return 0;
        int l = height(root->left);
        int r = height(root->right);
        if( l == -1 || r == -1 || abs(l - r) > 1)
            return -1;
        return max(l,r) + 1;
    }
};
相关推荐
Code小翊12 分钟前
希尔排序基础理解
数据结构·算法·排序算法
Pluchon31 分钟前
硅基计划4.0 算法 二叉树深搜(DFS)
java·数据结构·算法·leetcode·深度优先·剪枝
Yupureki1 小时前
从零开始的C++学习生活 9:stack_queue的入门使用和模板进阶
c语言·数据结构·c++·学习·visual studio
小年糕是糕手2 小时前
【数据结构】单链表“0”基础知识讲解 + 实战演练
c语言·开发语言·数据结构·c++·学习·算法·链表
咸鱼爱学习3 小时前
【题解】B2613【深基1.习5】打字速度
数据结构·c++·算法
阿林学习计算机3 小时前
AVL树的实现
数据结构
whm27773 小时前
Visual Basic 值传递与地址传递
java·开发语言·数据结构
立志成为大牛的小牛3 小时前
数据结构——二十二、并查集(王道408)
c语言·数据结构·笔记·学习·考研
QuantumLeap丶5 小时前
【数据结构:从0-1】-01-数据结构介绍及学习路线规划
数据结构
Code小翊5 小时前
堆的基础操作,C语言示例
java·数据结构·算法