中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何判斷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
鄯善县| 中山市| 石楼县| 高阳县| 磐石市| 土默特左旗| 马鞍山市| 介休市| 体育| 鄂州市| 友谊县| 融水| 阳春市| 芮城县| 文登市| 鸡西市| 桐庐县| 巫溪县| 军事| 龙游县| 双流县| 博湖县| 万全县| 达拉特旗| 长葛市| 菏泽市| 阜宁县| 镇江市| 太仆寺旗| 策勒县| 巴东县| 天长市| 元氏县| 香格里拉县| 丹棱县| 双峰县| 娄烦县| 惠东县| 交城县| 万宁市| 昆山市|