【发布时间】:2014-05-21 08:57:22
【问题描述】:
对于比二叉树更宽的树,术语“中序遍历”是否具有明确的含义,或者“前”和“后”顺序是唯一有意义的 DFS 类型?我的意思是n>每个节点有 2 个孩子。
我猜对于n 来说,这甚至可能意味着在n/2 孩子之后进入“根”,但这是否曾经这样使用过?那么奇怪的n呢?
【问题讨论】:
标签: tree tree-traversal
对于比二叉树更宽的树,术语“中序遍历”是否具有明确的含义,或者“前”和“后”顺序是唯一有意义的 DFS 类型?我的意思是n>每个节点有 2 个孩子。
我猜对于n 来说,这甚至可能意味着在n/2 孩子之后进入“根”,但这是否曾经这样使用过?那么奇怪的n呢?
【问题讨论】:
标签: tree tree-traversal
仅当您将子集明确划分为左子和右子时,才能继续明确定义中序遍历。
要看到这一点,请注意,如果我们展平树,中序遍历实际上是按照节点出现的顺序(或者等效地,如果我们凝视,节点出现的顺序)从左边开始越过树)。
因此,对于n-ary 树,您将首先处理左子集,然后是父集和右子集。
例如,考虑以下树:
如果我们定义左孩子的集合是从左边开始的前2个孩子节点,右孩子的集合是最后一个节点,我们将得到以下中序遍历:
14、15、5、16、17、18、6、19、2、20、21、7、8、9、3、10、1、11、12、4、 13
选择左右子集的方法将取决于手头的问题。
【讨论】: