最近,我遇到了一个问题“从给定的顺序和顺序遍历构造树”.And,我已经查找了源代码(通过java)。从给定的无序和前置遍历构造树
但是有一点我在代码中非常困惑,那就是“如果(inStrt> inEnd)返回NULL”,我想知道作者是如何考虑这个不明显的边界条件的。
发布于 2017-03-22 04:05:01
在buildTree()的每个递归调用中,由in[]表示的无序序列有效地分为两个子序列,一个子序列表示属于父节点左侧的节点,另一个子序列表示属于父节点右侧的节点。(最初的序列并不是物理划分的,而是将索引传递到buildTree()以反映子序列。)
如在链接页面顶部的示例所示,in = [D, B, E, A, F, C],以及A是根、in_left = [D, B, E]和in_right = [F, C]。因此,inStr和inEnd指数传递到buildTree()中以反映这些亚序列,即(0, 2)和(4, 5)。
那么,当inStr > inEnd时,这意味着什么?简单地说,已经没有子节点了,所以我们可以停下来。
“递归边界条件”与快速排序的边界条件非常相似,后者比较了低指数和高指数。
https://stackoverflow.com/questions/42918659
复制相似问题