【发布时间】:2012-04-27 14:16:47
【问题描述】:
我想知道给定的二叉树是否是二叉搜索树。
我不知道该怎么做?
我唯一知道的是BST的中序遍历会给你升序输出。
那么,这是我们需要验证的唯一条件还是我们应该检查的其他任何内容。
如果还有一些其他必要条件需要检查,它们是什么?为什么需要检查这些条件?因为,我认为,INORDER 遍历本身可以很容易地告诉你给定的树是否是 BST。
【问题讨论】:
-
以the definition of a Binary Search Tree 开头。给定的树是否符合这个定义? (请注意,可以通过递归应用规则来导出中序遍历规则。另请注意,不同的树,例如 RB,可能有资格作为 BST 和另一种树类型。)
-
(或者更确切地说,RB树是一个 BST等)
-
你能不能通过下面的链接……我问的问题几乎和那个差不多。但是在那个链接中,人们提出了一些其他的方法……除了 INORDER 遍历。我不知道为什么需要检查那些额外的条件。 stackoverflow.com/questions/499995/…
-
您提供的链接中的所有答案几乎都是相同的“有序行走(不同语言)并检查左子树是否小于根和右子树大于根”。这正是@Andreas Brinck 在下面的回答中所说的。