Java实现——重建二叉树
题干
- 题干:输入某二叉树前序遍历和中序遍历的结果,重建该二叉树。假设输入的前序和中序中不含有重复的数字。
- 前序 preOrder = {1,2,4,7,3,5,6,8};
- 中序 inOrder = {4,7,2,1,5,3,8,6}
思路
- 思路:递归:
- 分两步走
- 1.根据前序遍历的序列找到根节点的值
根据根节点的值在中序遍历序列中找到相应的位置
- 2.将中序遍历中,根节点所在索引的左边,赋值给root.left,即为左子树
将中序遍历中,根节点所在索引的右边,赋值给root.right,即为右子树
代码
public class reBuildTree {
public static void main(String[] args) {
int[] preOrder = {1,2,4,7,3,5,6,8};
int[] inOrder = {4,7,2,1,5,3,8,6};
BinaryTreeNode treeNode = reBuilder(preOrder,inOrder);
System.out.println(treeNode.right.right.right.val);
}
private static BinaryTreeNode reBuilder(int[] pre, int[] in) {
if(pre.length == 0 || in.length ==0){
return null;
}
BinaryTreeNode root = new Bi