是红黑树需要两次遍历

时间:2013-07-14 00:23:26

标签: java data-structures red-black-tree

我们知道要获得精确的二叉树,我们至少需要两次遍历(按顺序和预订/有序和后序)才能返回原始树。但是,如果树是红黑树,是否必须进行两次遍历(按顺序和预订/有序和后序)才能获得原始树?感谢。

3 个答案:

答案 0 :(得分:2)

通过提供一个反例,很容易证明有序遍历是不够的:

     5B
  3R     10B
1B  4B

      3B
    1B   5R
        4B  10B

这些都是有效的红黑树,其有序遍历顺序为(1,3,4,5,10)。因此,不可能仅通过其节点的有序遍历来重建红黑树。

答案 1 :(得分:1)

对于reference,“与顺序配对的预订或后订单足以唯一地描述树,而预订顺序则在树结构中留下一些歧义。”特别是,这个answer反例表明单独的有序遍历是不够的,而Q&A表明预先排序&一起下订单是不够的。因为“红黑树是special type of binary tree”,答案是肯定的:至少需要两次遍历,其中一次是有序的。

答案 2 :(得分:1)

不,预订或订单后遍历就足够了。

由于红黑树二进制搜索树,搜索树属性意味着有序遍历只是所有元素的排序列表,并且因此是多余的。