题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路
[方法一] 递归
import java.util.*;
public class Solution {
// 递归
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) return true;
return Math.abs(TreeDepth(root.left) - TreeDepth(root.right)) > 1 ? false : true;
}
public int treeDepth(TreeNode root) {
if (root == null) return 0;
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
return Math.max(left, right) + 1;
}
}
[方法二] 只需要遍历一次
import java.util.*;
public class Solution {
private boolean isBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
treeDepth(root);
return isBalanced;
}
public int treeDepth(TreeNode root) {
if (root == null) {
return 0;
}
int left = treeDepth(root.left);
int right = treeDepth(root.right);
if (Math.abs(left - right) > 1) {
isBalanced = false;
}
return left > right ? left + 1 : right + 1;
}
}

本文介绍了两种判断二叉树是否为平衡二叉树的方法:递归法与单次遍历法。递归法通过计算左右子树的深度并比较其差值来判断;单次遍历法则采用自底向上的方式,只遍历一次即可得出结果。
347

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



