如何判断两棵二叉树是否相等或不同
How to determine if two binary trees are equal or different
下图是3个节点可以做出的不同二叉树的情况
但是为什么下面这个案例没有计入案例数呢?
是不是和上图左数第三个情况一样?如果是这样,我想亲子关系就会不一样了。
如果你能告诉我如何确定二叉树如何彼此相等或不同,我将不胜感激。
你的意思是3个节点。您的案例不包括在内,因为这些案例都使用 A
作为根节点,因此使用 same 顺序中始终相同的元素更容易演示不同的可能组合,即 A
作为根,然后 B
-> C
在顶部,对称地 C
-> B
在底部。
使用B
或C
作为根,您可以获得相同数量的变体。可以使用以下公式计算此数字:
在这种情况下,n=3
,所以F(0)*F(2) + F(1)*F(1) + F(2)*F(0) = 2 + 1 + 2 = 5
F(0) = 1
(空的被认为是一种变体)
F(1) = 1
F(2) = 2
所以在你的图片中,如果那应该是一个二叉搜索树,那么只有一行实际上是相关的。另请注意,二叉树与二叉 search 树之间存在差异。来自下面的第一篇文章:
As we know, the BST is an ordered data structure that allows no
duplicate values. However, Binary Tree allows values to be repeated
twice or more. Furthermore, Binary Tree is unordered.
参考资料
https://www.baeldung.com/cs/calculate-number-different-bst
https://en.wikipedia.org/wiki/Binary_tree#Using_graph_theory_concepts
https://encyclopediaofmath.org/wiki/Binary_tree
下图是3个节点可以做出的不同二叉树的情况
但是为什么下面这个案例没有计入案例数呢?
是不是和上图左数第三个情况一样?如果是这样,我想亲子关系就会不一样了。
如果你能告诉我如何确定二叉树如何彼此相等或不同,我将不胜感激。
你的意思是3个节点。您的案例不包括在内,因为这些案例都使用 A
作为根节点,因此使用 same 顺序中始终相同的元素更容易演示不同的可能组合,即 A
作为根,然后 B
-> C
在顶部,对称地 C
-> B
在底部。
使用B
或C
作为根,您可以获得相同数量的变体。可以使用以下公式计算此数字:
在这种情况下,n=3
,所以F(0)*F(2) + F(1)*F(1) + F(2)*F(0) = 2 + 1 + 2 = 5
F(0) = 1
(空的被认为是一种变体)
F(1) = 1
F(2) = 2
所以在你的图片中,如果那应该是一个二叉搜索树,那么只有一行实际上是相关的。另请注意,二叉树与二叉 search 树之间存在差异。来自下面的第一篇文章:
As we know, the BST is an ordered data structure that allows no duplicate values. However, Binary Tree allows values to be repeated twice or more. Furthermore, Binary Tree is unordered.
参考资料
https://www.baeldung.com/cs/calculate-number-different-bst
https://en.wikipedia.org/wiki/Binary_tree#Using_graph_theory_concepts
https://encyclopediaofmath.org/wiki/Binary_tree