【劍指Offer】No.27 平衡二叉樹

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

平衡二叉樹:平衡二叉樹的左右子樹也是平衡二叉樹,那麼所謂平衡就是左右子樹的高度差不超過1.

解題思路

這道題從定義出發,檢查每一個左子樹與右子樹的高度差。所以基於求二叉樹的深度,想到每一次的左右子樹高度進行檢查,並且返回左右子樹較大高度作爲其根節點所在子樹的高度。

public class Solution {
    boolean flag = true;
    public boolean IsBalanced_Solution(TreeNode root) {
        if (root == null) {
            return flag;
        }
        func(root);
        return flag;
    }
    private int func(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        int left = func(root.left) + 1;
        int right = func(root.right) + 1;
        if (left - right > 1 || right - left > 1) {
            flag = false;
        }
        
        return (left > right) ? left : right;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章