LeetCode 训练场:110. 平衡二叉树

简介: LeetCode 训练场:110. 平衡二叉树

1. 题目

110. 平衡二叉树


2. 描述

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


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


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


示例 1:


给定二叉树 [3,9,20,null,null,15,7]


3


/ \


9 20


/ \


15 7


返回 true 。


示例 2:


给定二叉树 [1,2,2,3,3,null,null,4,4]


    1

   / \

  2   2

 / \

  3  3

 / \

 4   4


返回 false 。


3. 实现方法

3.1 方法 1

3.1.1 思路

定义一个方法 depth() 来求二叉树的深度

先对二叉树进行判断是否为 null,是则说明该树是平衡树

若二叉树左右子树高度差大于 1,则说明该树不平衡

然后递归左右子树,判断是否均为平衡树

3.1.2 实现


public boolean isBalanced(TreeNode root) {
  // 判断根节点是否为 null,是则该树是平衡
    if (root == null) {
        return true;
    }
    // 若二叉树左右子树高度差大于 1,则说明该树不平衡
    if (Math.abs(depth(root.left) - depth(root.right)) > 1) {
        return false;
    }
    // 递归左右子树,判断是否均为平衡树
    return isBalanced(root.left) && isBalanced(root.right);
}
// 求一个二叉树的深度
public int depth(TreeNode root) {
    if (root == null) {
        return 0;
    }
    return 1 + Math.max(depth(root.left), depth(root.right));
}
目录
相关文章
|
5月前
|
算法
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
31 0
LeetCode | 110. 平衡二叉树
LeetCode | 110. 平衡二叉树
LeetCode刷题Day14——二叉树(完全二叉树、平衡二叉树、二叉树路径、左叶子之和)
一、完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数
|
5月前
|
算法
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
28 0
|
6月前
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
17 0
|
11月前
Leetcode 110 平衡二叉树
Leetcode 110 平衡二叉树
145 0
|
算法
LeetCode 周赛 340,质数 / 前缀和 / 极大化最小值 / 最短路 / 平衡二叉树
今天讲 LeetCode 单周赛第 340 场,今天状态不好,掉了一波大分。
57 0
代码随想录刷题|LeetCode 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
代码随想录刷题|LeetCode 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
|
算法 Java
算法打卡Day21_leetcode _110.平衡二叉树
算法打卡Day21_leetcode _110.平衡二叉树
算法打卡Day21_leetcode _110.平衡二叉树

热门文章

最新文章