Data structures 当两棵树相等时?
如果按顺序遍历两棵二叉树(不是二叉搜索树)是相同的,它是否保证这两棵树是相同的Data structures 当两棵树相等时?,data-structures,tree,traversal,Data Structures,Tree,Traversal,如果按顺序遍历两棵二叉树(不是二叉搜索树)是相同的,它是否保证这两棵树是相同的 如果答案是“否”,那么顺序遍历和预顺序遍历都是相同的吗?肯定不是。两棵树 b / \ a d / \ c e 及 两者都有一个顺序遍历abcde。事实上,它们是旋转,一种操作。我认为“不” 两棵树的平衡可能不同,但节点值的“顺序”相同。例如,如果 1,2,3,4,5,6,7 您可以构建一棵树: 4 2 6 1 3 5 7 按顺序遍历将产
如果答案是“否”,那么顺序遍历和预顺序遍历都是相同的吗?肯定不是。两棵树
b
/ \
a d
/ \
c e
及
两者都有一个顺序遍历abcde
。事实上,它们是旋转,一种操作。我认为“不”
两棵树的平衡可能不同,但节点值的“顺序”相同。例如,如果
1,2,3,4,5,6,7
您可以构建一棵树:
4
2 6
1 3 5 7
按顺序遍历将产生1,2,3,4,5,6,7
但是,如果选择不同的根节点(如果列表事先没有正确排序)
这两棵树将给出相同的顺序遍历结果,但(显然)不相同
甚至
7
6
5
4
3
2
1
等等
这也与BSP(二进制空间分区)树的问题有关,BSP树通常用于游戏开发冲突检测和可见性确定
BSP将三角形存储在树中。每个节点都包含一个三角形或镶嵌面。左侧节点包含面“后面”的所有子节点,而右侧子节点包含面“前面”的所有子节点。按预期递归
如果选择场景中最左侧的面作为根,则右侧子对象将拥有所有其他面。如果你为正确的孩子做了一个错误的决定,同样的事情也会发生。完全有可能构建一个BSP编译器,通过愚蠢的分析,构建一个实际上是列表的“树”(如我上面的最后一个示例所示)。问题是对数据集进行分区,以便每个节点尽可能平等地划分剩余列表。这是BSP通常在编译时生成的原因之一,因为为非常复杂的几何体构建BSP可能需要数小时才能找到最佳解决方案。否,通过这个简单的示例可以看出这一点
3 2
2 1 3
1 0
0
两者都有相同的顺序遍历[0,1,2,3]
但如果按序遍历和按序遍历相同,则树是相等的。按序遍历和按序遍历中的任何一个,唯一地定义树结构。同样如此。您可以做的一件事是使用级别顺序 5. 4 6 27
13
lvel顺序-5 4 6 2 N 7 1 3 N或者如果顺序和后序遍历相同,我们得到了相同的结论。
7
6
5
4
3
2
1
3 2
2 1 3
1 0
0