题目
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。
解题思路
DFS
- 计算当前节点的左右子树高度差
- 若高度差 > 1,返回false
- 若高度差 <= 1
- 递归计算左子树
- 递归计算右子树
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
if (root == null) return true;
if (Math.abs(height(root.left) - height(root.right)) > 1) return false;
return isBalanced(root.left) && isBalanced(root.right);
}
private int height(TreeNode node) {
if (node == null) return 0;
return Math.max(height(node.left), height(node.right)) + 1;
}
}

本文介绍了如何使用递归深度优先搜索(DFS)算法判断二叉树是否平衡,通过计算节点高度差并递归处理左右子树,确保满足高度差不超过1的条件。
431

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



