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

溫馨提示×

Java怎么根據前序后序構建二叉樹

小億
82
2024-03-15 15:54:59
欄目: 編程語言

在Java中,可以根據給定的前序遍歷和后序遍歷數組構建二叉樹。下面是一個示例代碼:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int val) {
        this.val = val;
    }
}

public class BinaryTreeBuilder {
    public TreeNode buildTree(int[] preOrder, int[] postOrder) {
        return buildTreeHelper(preOrder, postOrder, 0, preOrder.length - 1, 0, postOrder.length - 1);
    }

    private TreeNode buildTreeHelper(int[] preOrder, int[] postOrder, int preStart, int preEnd, int postStart, int postEnd) {
        if (preStart > preEnd || postStart > postEnd) {
            return null;
        }

        TreeNode root = new TreeNode(preOrder[preStart]);

        if (preStart == preEnd) {
            return root;
        }

        int leftRootVal = preOrder[preStart + 1];
        int leftRootIndex = postStart;
        while (postOrder[leftRootIndex] != leftRootVal) {
            leftRootIndex++;
        }

        int leftTreeSize = leftRootIndex - postStart + 1;

        root.left = buildTreeHelper(preOrder, postOrder, preStart + 1, preStart + leftTreeSize, postStart, leftRootIndex);
        root.right = buildTreeHelper(preOrder, postOrder, preStart + leftTreeSize + 1, preEnd, leftRootIndex + 1, postEnd - 1);

        return root;
    }
}

在這段代碼中,我們首先定義了一個TreeNode類表示二叉樹的節點。然后定義了一個BinaryTreeBuilder類來構建二叉樹。在buildTree方法中,我們調用buildTreeHelper方法來遞歸構建二叉樹。在buildTreeHelper方法中,我們首先創建根節點,并根據前序遍歷數組和后序遍歷數組的特點,找到左子樹的根節點值和左子樹的大小,然后遞歸構建左子樹和右子樹。

最后,我們可以調用buildTree方法來構建二叉樹,并傳入前序遍歷數組和后序遍歷數組作為參數。

0
家居| 新建县| 绥芬河市| 嵩明县| 晋城| 和静县| 广汉市| 汉寿县| 会泽县| 邵武市| 井陉县| 盐亭县| 永安市| 仲巴县| 阿巴嘎旗| 鄂州市| 温宿县| 土默特右旗| 洪江市| 武宣县| 青铜峡市| 鄂托克前旗| 诸城市| 镇巴县| 吴忠市| 临泽县| 疏勒县| 元氏县| 安龙县| 湘阴县| 达拉特旗| 贺兰县| 醴陵市| 莆田市| 石家庄市| 海晏县| 浠水县| 阿坝| 井研县| 汾阳市| 武陟县|