python 二叉树知前序、中序,打印后序

二叉树结构

class Node:
    def __init__(self, x):
        self.val=x
        self.left=None
        self.right=None

重建二叉树

def build(pre, mid):
    if len(pre)>0:
        root=Node(pre[0])
        idx=mid.index(root.val)
        root.left=build(pre[1:idx+1], mid[:idx])
        root.right=build(pre[idx+1:], mid[idx+1:])
        return root

后序打印

def postOrder(root):
    if root:
        postOrder(root.left)
        postOrder(root.right)
        print(root.val)

示例

pre=['A', 'B', 'D', 'E', 'G', 'C', 'F', 'H']
mid=['D', 'B', 'G', 'E', 'A', 'C', 'H', 'F']

root=build(pre, mid)
postOrder(root)

输出

['D', 'G', 'E', 'B', 'A', 'H', 'F', 'C']
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容