今天的題目為110.Balanced Binary Tree,題目再叫我們判斷一棵二元樹是否為高度平衡的樹。
以下是程式碼與解說:
class Solution {
public boolean isBalanced(TreeNode root) {
// 若樹根為 null,代表是空樹,視為平衡
if(root == null){
return true;
}
// 計算左子樹高度
int leftHeight = getHeight(root.left);
// 計算右子樹高度
int rightHeight = getHeight(root.right);
// 若左右高度差超過 1,或任一子樹不平衡,則整棵樹不平衡
if(Math.abs(leftHeight - rightHeight) > 1 ||
!isBalanced(root.left) ||
!isBalanced(root.right)){
return false;
}
// 否則為平衡樹
return true;
}
// 計算某個節點的高度
private int getHeight(TreeNode node){
// 空節點高度為 0
if(node == null){
return 0;
}
return 1 + Math.max(getHeight(node.left), getHeight(node.right));
// 高度 = 1(自己)+ 左右子樹最大高度
}
今天的題目很平宜靜人。