在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 = postOrder[postEnd - preEnd + preStart];
int leftRootIndex = -1;
for (int i = preStart + 1; i <= preEnd; i++) {
if (preOrder[i] == leftRootVal) {
leftRootIndex = i;
break;
}
}
root.left = buildTreeHelper(preOrder, postOrder, preStart + 1, leftRootIndex, postStart, postEnd - 1);
root.right = buildTreeHelper(preOrder, postOrder, leftRootIndex + 1, preEnd, postEnd - 1, postEnd - 2);
return root;
}
}
这段代码定义了一个`TreeNode`类来表示二叉树的节点,以及一个`BinaryTreeBuilder`类,其中包含一个`buildTree`方法,该方法接受两个整数数组作为输入,分别代表二叉树的前序遍历和后序遍历结果,并返回构建好的二叉树的根节点。