【数据结构和算法实践-树-LeetCode110-平衡二叉树】

数据结构和算法实践-树-LeetCode110-平衡二叉树

题目

给定一个二叉树,判断它是否是
平衡二叉树

输入:root = 3,9,20,null,null,15,7
输出:true

My Thought

判断平衡二叉树的条件是树的左右高度相差为1
一、利用递归去遍历
1、边界为节点为null,树高为0;
2、树高的递增规则为,根的左节点和右节点比较值+1
二、为了方便信息传递,需要设置一个实体存储高度和是否平衡

代码示例

JAVA-8

java 复制代码
    public boolean isBalanced(TreeNode root) {
        return process(root).isBalanced;
    }

    private NodeInfo process(TreeNode root) {
        if (root == null) {
            return new NodeInfo(0, true);
        }
        NodeInfo leftNode = process(root.left);
        NodeInfo rightNode = process(root.right);
        int height = Math.max(leftNode.height, rightNode.height) + 1;
        boolean isBalanced = leftNode.isBalanced && rightNode.isBalanced && Math.abs(leftNode.height - rightNode.height) < 2;
        return new NodeInfo(height, isBalanced);
    }
相关推荐
BK贝壳6 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
企业数字化笔记9 小时前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频
?abc!10 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
小郎君65812 小时前
MPTT树复选框的半选状态:一棵百万节点树从递归到计数器,再到区间覆盖
算法
酌沧12 小时前
MemT让记忆成为模型内生能力
jvm·人工智能·算法
hold?fish:palm12 小时前
40 二叉树的直径
c++·leetcode
Shimeri13 小时前
越卷越像:我用遗传算法做了个"内卷"实验
算法·three.js·数据可视化·遗传算法·进化算法
Evand J13 小时前
【PMSM例程1】永磁同步电机(PMSM)转速与转子电角度观测算法|基于扩展卡尔曼滤波(EKF)的传感器状态估计与误差。附下载链接
算法·电机·1024程序员节·卡尔曼滤波
guo_wen_qiang13 小时前
二叉树的层序遍历-使用双端队列Deque
算法·leetcode·1024程序员节
爱读书的小胖14 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节