https://leetcode-cn.com/problems/balanced-binary-tree/
题意
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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 = [1,2,2,3,3,null,null,4,4]
输出:false
题解
解法一:自顶向下
这道题希望我们判断一棵树是否是平衡二叉树,即所有节点的左右子树高度差不能超过1。既然判断的条件是高度差不能超过1,那么我们势必要算出左右子树的高度,那么如何求一个节点的高度?当前节点的高度与左右子树有关,那么可以使用递归方法求解,如下。
//获取高度
private int height(TreeNode root){
if(root==null)return 0;
return 1+Math.max(height(root.left),height(root.right));
}
要判断一棵树是否是平衡二叉树,那么我们只要对每一个节点判断是否平衡即可,至此自然就想到了遍历。通过遍历判断每一个节点是否平衡,不平衡就停止遍历输出false这就是解题思路。那么使用哪一种遍历呢?其实使用哪一种遍历都是一样的,因为我们对每一个节点都需要进行判断,哪里可能先失衡是难以预料的。
class Solution {
public boolean isBalanced(

本文介绍三种判断二叉树是否平衡的方法:自顶向下遍历、记忆化存储及自底向上遍历。针对每种方法的特点及优劣进行了详细解析。
最低0.47元/天 解锁文章
858

被折叠的 条评论
为什么被折叠?



