核心代码:
int preindex = 0;
int inindex = 0;
public TreeNode buildTree(int[] preorder, int[] inorder) {
return dfs(preorder, inorder, null);
}
private TreeNode dfs(int[] preorder, int[] inorder, TreeNode finish) {
if(preindex == preorder.length || (finish != null && inorder[inindex] ==finish.val))
return null;
TreeNode root = new TreeNode(preorder[preindex++]);
root.left = dfs(preorder, inorder, root);
inindex++;
root.right = dfs(preorder, inorder, finish);
return root;
}
“root.right = dfs(preorder, inorder, finish);”中的finish理解不了
因为我认为finish只是一个形式参数,没有实参传递给它。所以我不知道finish在函数体中具体是什么。希望大佬们指导一下!!!
就你这段代码没有看到对finish的赋值,也就是说finish一直是null
但是在一些情况下,首次调用,第三个参数传入finish,不是null,可以设置为迭代到这个节点就停止继续遍历。
finish其实也是一个树结构,具体原理还是不太懂