平衡二叉树(C++)

简介: 平衡二叉树(C++)
平衡二叉树

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

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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

我的代码:

/**
 * 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 {
private:
    int height(TreeNode* root)
    {
        if (root == NULL) return 0;
        else return max(height(root->left), height(root->right)) + 1;
    }
public:
    bool isBalanced(TreeNode* root) {
        if (root == NULL) return true;
        else
        {
        // 根据平衡二叉树的定义来写的 左右子树的绝对值小于1
        return abs(height(root->left) - height(root->right)) <= 1 && isBalanced(root->left) && isBalanced(root->right);
        } 
    }
};

对应我的掘金文章:https://juejin.cn/post/7147319213621788703

相关文章
|
7月前
|
存储 安全 C++
C++【二叉搜索树】
C++【二叉搜索树】
66 0
|
存储 算法 关系型数据库
有了二叉树,平衡二叉树为什么还需要红黑树
有了二叉树,平衡二叉树为什么还需要红黑树
108 0
有了二叉树,平衡二叉树为什么还需要红黑树
51 # 二叉搜索树的实现
51 # 二叉搜索树的实现
36 0
|
算法
平衡二叉树(AVL树)
平衡二叉树(AVL树)
86 0
|
存储
【二叉搜索树】
【二叉搜索树】
49 0
|
算法
二叉搜索树、平衡二叉树
一、二叉搜索树 这里我们不用太多书面化的语言来定义,笔者认为在讨论数据结构、算法相关的内容时用太多书面化、学术化的语言是一种让人很烦的事情。咬文嚼字,不便于读者理解。 简单来说二叉树搜索树,其实就是用来做二分查找的一种二叉树。 特点是:根节点的左子树值均小于根节点的值,根节点的右子树值均大于根节点的值。 比如123 4 567建树的结果就是
58 0
C++:二叉搜索树
本文主要讲解了二叉搜索树的性质,以及代码实现二叉搜索树,还有就是提到了K模型和KV模型。
C++:二叉搜索树