这是根据本人另一个C语言版本采用python实现的,添加了根据中序和后序重建二叉树功能,更多详细解释可参考:http://blog.csdn.net/hinyunsin/archive/2011/04/11/6315502.aspx
下面就是python代码:
if __name__ == '__main__':
preo = 'ABDGCEFH'
ino = 'DGBAECHF'
po = 'GDBEHFCA'
bt = buildBTreeFromPreIn(preo, ino)
print 'Build from preorder & inorder'
print 'Preorder: %s' % (preorderTraverse(bt))
print 'Inorder: %s' % (inorderTraverse(bt))
print 'Postorder: %s' % (postorderTraverse(bt))
print 'The BTree is (* means no such a node):'
printBTree(bt, 0)
bt = buildBTreeFromInPost(ino, po)
print 'Build from inorder & postorder'
print 'Preorder: %s' % (preorderTraverse(bt))
print 'Inorder: %s' % (inorderTraverse(bt))
print 'Postorder: %s' % (postorderTraverse(bt))
print 'The BTree is (* means no such a node):'
printBTree(bt, 0)
python确实很有意思,写出来的东西比c要简洁很多,当然,我的其实还远远不够简洁,没办法,还是新手嘛,呵呵~
这里多了根据中序和后序重建二叉树功能,原理和根据前序和中序重建一样。
下面是执行结果: