1. 程式人生 > 實用技巧 >LeetCode 110 判斷平衡二叉樹

LeetCode 110 判斷平衡二叉樹

Leetcode 110 判斷平衡二叉樹

給定一顆二叉樹,判斷該樹是否滿足平衡條件: 對於任一節點,其左右子樹高度相差不超過1

DFS

執行用時:1 ms, 在所有 Java 提交中擊敗了99.73%的使用者
記憶體消耗:39.8 MB, 在所有 Java 提交中擊敗了70.51%的使用者

class Solution {
    public boolean isBalanced(TreeNode root) {
        //空節點
        if(root==null) {
            return true;
        }
        //葉子節點
        else if(root!=null && root.left==null && root.right==null) {
            return true;
        }
        //非葉子節點
        else {
            return (Math.abs(dfs(root.left)-dfs(root.right))<2) && isBalanced(root.left) && isBalanced(root.right);
        }

    }

    //對於根節點root,返回其左右子樹(如果有的話)的高度
    public int dfs(TreeNode root) {
        if(root==null) {
            return 0;
        }
        int leftHeight = dfs(root.left);
        int rightHeight = dfs(root.right);
        return Math.max(leftHeight, rightHeight)+1;
    }

}