亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何判斷treenode構成的樹是否平衡

小樊
83
2024-07-04 09:42:24
欄目: 編程語言

一棵樹是平衡的,是指該樹的每個節點的左右子樹的高度差不超過1。要判斷一個由TreeNode構成的樹是否平衡,可以通過遞歸的方式來判斷每個節點的左右子樹的高度差是否小于等于1。

具體步驟如下:

  1. 編寫一個函數 getHeight(TreeNode node),用于計算以node為根節點的樹的高度。
  2. 編寫一個函數 isBalanced(TreeNode node),用于判斷以node為根節點的樹是否平衡。在該函數中,遞歸地判斷node的左子樹和右子樹是否平衡,并且判斷左子樹和右子樹的高度差是否小于等于1。
  3. 在主函數中,調用isBalanced函數,傳入根節點,即可判斷整棵樹是否平衡。

示例代碼如下:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

public class Solution {
    public int getHeight(TreeNode node) {
        if (node == null) {
            return 0;
        }
        return Math.max(getHeight(node.left), getHeight(node.right)) + 1;
    }

    public boolean isBalanced(TreeNode node) {
        if (node == null) {
            return true;
        }
        int leftHeight = getHeight(node.left);
        int rightHeight = getHeight(node.right);

        if (Math.abs(leftHeight - rightHeight) > 1) {
            return false;
        }

        return isBalanced(node.left) && isBalanced(node.right);
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);
        
        boolean isBalanced = solution.isBalanced(root);
        System.out.println("Is the tree balanced? " + isBalanced);
    }
}

以上是用Java語言實現的判斷樹是否平衡的方法,其他編程語言也可根據相同的思路來實現。

0
南城县| 会泽县| 青浦区| 平山县| 南召县| 永新县| 武清区| 保定市| 贵港市| 星子县| 万安县| 墨江| 武平县| 石嘴山市| 明星| 龙南县| 阿克陶县| 南投市| 江山市| 绥德县| 博乐市| 星座| 辽宁省| 襄樊市| 成都市| 南木林县| 黔南| 贞丰县| 仪陇县| 五华县| 金堂县| 瑞金市| 长春市| 昌江| 宣威市| 色达县| 乡城县| 沐川县| 新兴县| 江阴市| 九龙城区|