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

溫馨提示×

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
桓台县| 重庆市| 威远县| 湖南省| 屯门区| 平度市| 兴山县| 元阳县| 五峰| 钟祥市| 朔州市| 遵义县| 客服| 资源县| 京山县| 浦东新区| 菏泽市| 长岭县| 额济纳旗| 阿克苏市| 白河县| 霍邱县| 永德县| 同江市| 罗江县| 唐山市| 蒙自县| 朔州市| 磐石市| 福安市| 伊吾县| 专栏| 晋江市| 白银市| 大田县| 潜江市| 毕节市| 紫金县| 郓城县| 台北县| 资阳市|