c++的二叉树前序,中序,后续的区别
前序遍历(Preorder Traversal)是指在二叉树遍历过程中,首先访问根节点,然后按照先左后右的顺序遍历左子树和右子树。
中序遍历(Inorder Traversal)是指在二叉树遍历过程中,先遍历左子树,然后访问根节点,最后遍历右子树。
后序遍历(Postorder Traversal)是指在二叉树遍历过程中,先遍历左子树,然后遍历右子树,最后访问根节点。
以一棵二叉树为例,假设其根节点为A,左子树为B,右子树为C。那么:
前序遍历的结果就是:A -> B -> C
中序遍历的结果就是:B -> A -> C
后序遍历的结果就是:B -> C -> A
1。给定一棵二叉树,其前序遍历结果为: ABDECFG,中序遍历结果为: DEBACFG。请问这棵树的正确后序遍历结果是什么?
根据前序遍历和中序遍历的结果,我们可以确定这棵二叉树的结构和节点的相对顺序。根据前序遍历的特点,根节点必定是第一个节点,而根据中序遍历的特点,根节点的左子树在根节点的左侧,右子树在根节点的右侧。
给定的前序遍历结果为:ABDECFG
给定的中序遍历结果为:DEBACFG
根据前序遍历结果,我们可以得到根节点为A。
根据中序遍历结果,我们可以得到根节点A的左子树节点为DEB,右子树节点为CFG。
接下来,我们可以继续递归地应用上述步骤来构建整棵树。
左子树的前序遍历结果为:BDE
左子树的中序遍历结果为:DEB
根据左子树的前序遍历结果,我们可以得到左子树的根节点为B。
根据左子树的中序遍历结果,我们可以得到左子树的左子树节点为D,右子树节点为E。
右子树的前序遍历结果为:CFG
右子树的中序遍历结果为:CFG
根据右子树的前序遍历结果,我们可以得到右子树的根节点为C。
根据右子树的中序遍历结果,我们可以得到右子树的左子树节点为F,右子树节点为G。
现在我们已经重建了整棵树的结构如下:
A
/ \
B C
/ \
D E F
G
根据二叉树的后序遍历顺序(左子树->右子树->根节点),我们可以得到树的后序遍历结果为:DEBFGCA。
浙公网安备 33010602011771号