递归核心点:
1、问题能够分解成规模更小,但是解法一样子问题。
2、要有递归结束条件。
import java.util.Arrays;
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
//这个是递归结束条件,后面两个排除第一次传进来的数组有空数组的情况
if(pre.length==0 || in.length==0 || pre==null || in==null){
return null;
}
//拿到根节点
TreeNode root=new TreeNode(pre[0]);
//这里为什么能这样?因为题目说了二叉树里面不含有重复的数字
for(int i=0;i<in.length;i++){
if(in[i]==pre[0]){
root.left=reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1),Arrays.copyOfRange(in,0,i));
root.right=reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),Arrays.copyOfRange(in,i+1,in.length));
break;
}
}
return root;
}
}
本文介绍了一种使用递归算法构建二叉树的方法。核心在于将问题分解为规模更小但解法相同的问题,并设置递归结束条件。通过递归调用自身,算法根据前序遍历和中序遍历的数组构建完整的二叉树。
455

被折叠的 条评论
为什么被折叠?



