在Java中,可以根据给定的前序遍历和后序遍历数组构造二叉树。下面是一个示例代码:
类别TreeNode {
int val
TreeNode向左;
TreeNode right
TreeNode(int val ){
this.val = val
}
}
公共类BinaryTreeBuilder {
公共TreeNode构建树(int【】preOrder,int【】post order ){
返回buildTreeHelper(preOrder,postOrder,0,preOrder.length - 1,0,post order . length-1);
}
private TreeNode buildTreeHelper(int【】preOrder,int【】post order,int preStart,int preEnd,int postStart,int post end ){
if(preStart & gt;preEnd | | postStart & gtpostEnd)
返回null
}
TreeNode root = new TreeNode(preOrder【preStart】);
if(preStart = = preEnd ){
返回根;
}
int leftRootVal = preOrder【preStart+1】;
int leftRootIndex = postStart
while(post order【leftRootIndex】!= leftRootVal ){
leftrootindex++;
}
int left treesize = 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);
返回根;
}
}
在这段代码中,我们首先定义一个TreeNode类来表示二叉树的节点。然后定义一个BinaryTreeBuilder类来构建二叉树。在buildTree方法中,我们调用buildTreeHelper方法来递归构建二叉树。在buildTreeHelper方法中,我们首先创建根节点,并根据前序遍历数组和后序遍历数组的特征找到根节点值和左子树的大小,然后递归构造左子树和右子树。
最后,我们可以调用buildTree方法来构建一棵二叉树,并将前序遍历数组和后序遍历数组作为参数传入。
以上内容来自互联网,不代表本站全部观点!欢迎关注我们:zhujipindao。com
评论前必须登录!
注册