如果两个二叉树(非二叉搜索树)的有序遍历相同,是否保证两棵树是相同的?
如果答案为否,则有序和预订遍历的内容是一样的吗?
答案 0 :(得分:9)
绝对不是。两棵树
b
/ \
a d
/ \
c e
和
d
/ \
b e
/ \
a c
都有a b c d e
的inorder遍历。事实上,它们是轮换,是一种操作which preserves inorder traversal。
答案 1 :(得分:1)
我在想“不。”
两棵树的平衡可能不同,但节点值的“顺序”相同。例如,如果是集合
1,2,3,4,5,6,7
你建造一棵树:
4
2 6
1 3 5 7
有序遍历将产生1,2,3,4,5,6,7。
但是,如果您选择不同的根节点(如果列表未事先正确排序)
5
4 6
2 7
1 3
这两棵树将给出相同的有序遍历结果,但(明显)不相同。
甚至
7
6
5
4
3
2
1
等等。
这也与BSP(二进制空间分区)树的问题有关,通常用于游戏开发碰撞检测和可见性确定。
BSP将三角形存储在树中。每个节点包含一个三角形或小平面。左边的节点包含所有面在“face”后面的子节点,而右边的子节点包含“front”中的所有内容。按预期递减。
如果您选择场景中最左侧的构面作为根,则右侧孩子将拥有其他所有构面。如果你为正确的孩子做出错误的决定,同样的事情也会发生。完全有可能建立一个BSP编译器,通过白痴分析,构建一个实际上是列表的“树”(如上面的上一个例子)。问题是对数据集进行分区,以便每个节点尽可能平均地划分剩余列表。这是BSP通常在编译时生成的原因之一,因为为非常复杂的几何体构建BSP可能需要数小时才能找到/最佳解决方案。
答案 2 :(得分:1)
没有,用这个简单的例子看到它
3 2
2 1 3
1 0
0
两者都有相同的 inorder 遍历 [0,1,2,3]
但如果 inorder 和预订遍历相同,那么树就是相同的。
答案 3 :(得分:0)
顺序和前后顺序中的任何一个都唯一地定义树结构。没什么。
答案 4 :(得分:0)
您可以做的一件事是使用级别顺序
5
4 6
2 7
1 3
等级顺序- 5 4 6 2 N N 7 1 3 N N N N N N