二叉树的遍历方法求助~

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:53:56
前序遍历和中序遍历的方法是怎样的?
谢谢了!
已知一棵二叉树前序遍历是ABDEGCFH,中序遍历是DBGEACHF,那么该二叉树的后序遍历是多少?
请详细告知题解方法,多谢了!

很简单,就是一个递归过程。在函数中以先序遍历的第一个结点在中序遍历中为界把中序遍历分为两半,再分别把左一半和右一半作为这个结点的左子树和右子树进行递归。完成递归之后再打印该结点即可。结束递归的条件是左子树或右子树没有结点。下面是简单的程序示意,可以用任意语言实现:

import sys

rflist = list(sys.argv[1])
rmlist = list(sys.argv[2])

def printTreeRootLast(r, rflist, rmlist):
    r[0] = rflist.pop(0)

    rmLeftNodes = rmlist[:rmlist.index(r[0])]
    if len(rmLeftNodes) == 0:
        r[1] = None
    else:
        r[1] = [None, None, None]
        printTreeRootLast(r[1], rflist, rmLeftNodes)

    rmRightNodes = rmlist[rmlist.index(r[0])+1:]
    if len(rmRightNodes)&