如果我有BST(称之为-T)并在其上运行PRE-ORDER, 如何显示/证明运行函数" tree_insert"在我从预订中获得的序列中,我得到完全相同的树-T(我开始)回来了?
谢谢,
答案 0 :(得分:0)
例如,假设您有3个元素。
插入时,您插入的第一个元素将被视为根,然后下一个元素(无论是更低还是更大)将相应地放置在左侧或右侧。预先遍历意味着它将首先访问root,然后递归访问左子,然后递归访问正确的子项。所以在预订后会显示root,较小的元素,然后是较大的元素。现在尝试再次插入这3个元素。您将收到相同的树。 (插入的第一个元素将是根。然后较小的元素将再次向左移动,较大的元素将自动向右移动)。您可以使用3个元素对6种不同的场景进行建模。
场景1 :要插入的元素= {1,2,3} root = 1,right child = 2,right-most = 3
在执行preOrder时,首先访问1。没有留下的孩子,接下来就是2。 2没有左孩子,所以接下来要去3。 (1,2,3)
场景2 :要插入的元素= {2,1,3} root = 2,left child = 1,right child = 3
在执行preOrder时,首先访问2。离开孩子1,接下来就去了。正确的孩子是3岁,所以接下来就去看了。 (2,1,3)
场景3 :要插入的元素= {3,1,2} root = 3,left child = 1,左孩子的右孩子(身高1)= 2
执行preOrder时,首先访问3。左孩子是1,所以接下来就去看了。没有1的左子,所以接下来要访问3。 (3,1,2)
还有3种情况可以自己写出并自行检查。
答案 1 :(得分:0)
对于树的给定预订遍历,可以形成多个BST。如果您在预订遍历的同时进行INORDER遍历,则可以生成唯一的BST。