重建二叉树的一段代码,问题为根据前序和中序数组重建二叉树,代码中有一个TreeNode finish的形参,不知道finish的具体作用是什么?

核心代码:

    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其实也是一个树结构,具体原理还是不太懂