91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
南通市| 鹤壁市| 化隆| 丽江市| 谢通门县| 台东县| 湘潭县| 乐陵市| 武乡县| 临高县| 广饶县| 大名县| 信宜市| 华亭县| 隆化县| 孝昌县| 乌鲁木齐县| 吴桥县| 林西县| 固镇县| 汤原县| 双城市| 新沂市| 涿鹿县| 唐山市| 襄汾县| 霍林郭勒市| 芜湖县| 嘉义县| 永寿县| 澄迈县| 潢川县| 全椒县| 山东| 韩城市| 滨州市| 临江市| 丰原市| 始兴县| 乐都县| 青州市|