我正在开发一个重建二叉搜索树的函数。我试图先手工完成。
说我有: 前10,3,5,4,15,7,8,2,9,20 in-4,5,3,15,10,20,8,7,9,20
我无法理解。我知道10必须是根,并且有序序列中10左边的所有数字都需要在右子树中。
这会给我4,5,3,15
15大于10,并且作为二叉搜索树,左子树中的所有节点都应小于根。
这是否意味着这两个序列形成无效的二叉搜索树?
答案 0 :(得分:0)
你是对的。基于您已经给出的有序遍历,您的树似乎不是BST。 10,必须是根节点,正如您在查看预先遍序遍历中的第一个节点时收集的那样。在有序遍历中,10左边的所有内容都应该在左子树中,而10右边的所有内容都应该在右子树中。正如你所指出的那样,15不可能在10的左边(或7,8和9在10的右边)。话虽这么说,你仍然可以从这些数据重建一棵树。它只是没有排序的节点。