iT邦幫忙

2025 iThome 鐵人賽

DAY 0
0
自我挑戰組

Leetcode30天挑戰系列 第 11

Day11-Balanced Binary Tree

  • 分享至 

  • xImage
  •  

今天的題目為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(自己)+ 左右子樹最大高度
        
    }

今天的題目很平宜靜人。


上一篇
Day10-Convert Sorted List to Binary Search Tree
下一篇
Day12-Minimum Depth of Binary Tree
系列文
Leetcode30天挑戰15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言