重建二叉树
在已知前序遍历和中序遍历的情况下可以构建出完整二叉树,前序遍历的第一个元素即为根节点,在中序遍历中找到该节点,则中序遍历该节点左侧为左子树,右侧为右子树,左右递归该方法即可完整构建在这里插入代码片
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
if(pre.length0||vin.length0){
return null;
}
TreeNode root=new TreeNode(pre[0]);
for(int i=0;i<vin.length;i++){
if(vin[i]==pre[0]){
root.left=reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1),Arrays.copyOfRange(vin,0,i));
root.right=reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),Arrays.copyOfRange(vin,i+1,vin.length));
break;//这一步很关键,中序遍历中可能有多个与根节点大小相同的元素,找到第一个就需要终止查找
}
}
return root;
}
}
重建二叉树
于 2022-02-12 16:02:02 首次发布