如果二叉搜索树的前遍历为6、2、1、4、3、7、10、9、11,那么如何获得后遍历?
您将获得通过执行以下操作构造的树的预遍历:输出,向左遍历,向右遍历。
由于后序遍历来自BST,因此可以通过对数字进行排序来从后序遍历推断出有序遍历(左遍历,输出,右遍历)。在您的示例中,顺序遍历为1、2、3、4、6、7、9、10、11。
从两个遍历中,我们可以构造原始树。让我们使用一个更简单的示例:
预遍历给我们树的根为2。有序遍历告诉我们1落在左子树中,而3、4落在右子树中。左子树的结构很简单,因为它只包含一个元素。右子树的预遍历是通过从原始预遍历中得到该子树中元素的顺序来推导的:4、3。由此我们知道右子树的根为4,并且从有序遍历(3,4)中我们知道3落入了左子树。我们的最后一棵树看起来像这样:
2 / \ 1 4 / 3
通过树结构,我们可以通过遍历树来获得后序遍历:向左遍历,向右遍历,输出。对于此示例,后序遍历为1、3、4、2。
概括算法:
使用上述算法,与问题中的预遍历关联的后遍历为:1、3、4、2、9、11、10、7、6。到达那里作为练习。