剑指offer—55_2.平衡二叉树—分析及代码(Java)

news/2025/2/21 9:13:20

剑指offer——55_2.平衡二叉树——分析及代码[Java]

  • 一、题目
  • 二、分析及代码
    • 1. 记录深度
      • (1)思路
      • (2)代码
      • (3)结果
  • 三、其他

一、题目

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。

二、分析及代码

1. 记录深度

(1)思路

如果某二叉树中任意节点的左、右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。
可以通过记录各节点的深度避免重复递归。进一步地,对于每个节点,可以先记录其左、右子树的深度,并判断是否平衡,再计算得到其自身深度。根据这一过程特点,可以选择后序遍历的方法。

(2)代码

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        return TreeDepth(root) == -1 ? false : true;
    }
     
    public int TreeDepth(TreeNode root) {
        if (root == null)
            return 0;
        int left = TreeDepth(root.left);
        int right = TreeDepth(root.right);
        if (left == -1 || right == -1 || left - right > 1 || right - left > 1)
            return -1;
        return Math.max(left, right) + 1;
    }
}

(3)结果

运行时间:11 ms,占用内存 9440 k。

三、其他

暂无。


http://www.niftyadmin.cn/n/616358.html

相关文章

剑指offer—56.数组中只出现一次的数字—分析及代码(Java)

剑指offer——56.数组中只出现一次的数字——分析及代码[Java]一、题目二、分析及代码1. 二进制拆分 异或(1)思路(2)代码(3)结果三、其他一、题目 一个整型数组里除了两个数字之外,其他的数字…

【Flink 源码系列】Flink Collector Output 接口源码解析

0在 Flink 中 Collector 接口主要用于 operator 发送(输出)元素,Output 接口是对 Collector 接口的扩展,增加了发送 WaterMark 的功能,在 Flink 里面只要涉及到数据的传递都必须实现这两个接口,下面就来梳理…

剑指offer—57.和为S的两个数字—分析及代码(Java)

剑指offer——57.和为S的两个数字——分析及代码[Java]一、题目二、分析及代码1. 双指针(1)思路(2)代码(3)结果三、其他一、题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数&#…

剑指offer—57_2.和为S的连续正数序列—分析及代码(Java)

剑指offer——57_2.和为S的连续正数序列——分析及代码[Java]一、题目二、分析及代码1. 双指针(1)思路(2)代码(3)结果三、其他一、题目 题目描述: 小明很喜欢数学, 有一天他在做数学作业时, 要…

【Flink 实战系列】Flink SQL 使用 filesystem connector 同步 Kafka 数据到 HDFS(parquet 格式 + snappy 压缩)

Flink SQL 同步 Kafka 数据到 HDFS(parquet + snappy) 在上一篇文章中,我们用 datastream API 实现了从 Kafka 读取数据写到 HDFS 并且用 snappy 压缩,今天这篇文章我们来实现一个 Flink SQL 版本的,为了方便我直接采用 sql-client 提交任务的方式来演示。 添加 jar 包 …

剑指offer—58.翻转单词顺序列—分析及代码(Java)

剑指offer——58.翻转单词顺序列——分析及代码[Java]一、题目二、分析及代码1. 两次翻转(1)思路(2)代码(3)结果2. 直接拼接(1)思路(2)代码(3&…

剑指offer—58_2.左旋转字符串—分析及代码(Java)

剑指offer——58_2.左旋转字符串——分析及代码[Java]一、题目二、分析及代码1. 两次翻转(1)思路(2)代码(3)结果2. 直接拼接(1)思路(2)代码(3&…

剑指offer—59.滑动窗口的最大值—分析及代码(Java)

剑指offer——59.滑动窗口的最大值——分析及代码[Java]一、题目二、分析及代码1. 辅助队列(1)思路(2)代码(3)结果三、其他一、题目 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最…