博客公告:(1)本博客所有博客文章搬迁至《博客虫》http://www.blogchong.com/
(2)文章对应的源码下载链接参考博客虫网站首页的“代码GIT”直通车;
(3)更多的相关文章更新,以及代码等,请关注博客虫网站,网站中有技术Q群,以及代码共享链接。
目录
1 文档说明
2 二叉树的前中后序遍历算法
//采用递归的方式进行二叉树的遍历
Status PreOrderTraverse (BiTree T, Status ( * Visit)(TElemType e)) {
//最简单的Vist的函数如下:
// Status PrintElement (TElemType e) {
// printf ( e );
// return OK;
// }
if ( T ) {
if (Visit(T -> data)) //若有根节点则访问根节点
if (PreOrderTraverse(T -> lchild, Visit))
if (PreOrderTraverse(T -> rchild, Visit)) //递归遍历右子树
return OK;
return ERROR;
} else return OK;
}
//该遍历为先序遍历,若为中序后序,则调整访问根节点的顺序即可
3 二叉树的推导
3.1 由前序中序推导
已知一棵二叉树的前序序列和中序序列,构造该二叉树的过程如下:
Ø
Ø
Ø
Ø
Ø
3.2 由中序后序推导
已知一棵二叉树的后序序列和中序序列,构造该二叉树的过程如下:
Ø
Ø
Ø
Ø
Ø
3.3 其他遍历实例
前序遍历:1 2 4 8 9 10 11 5 3 6 7 (规律:根在前;子树在根后且左子树比右子树靠前);
中序遍历:8 4 10 9 11 2 5 1 6 3 7 (规律:根在中;左子树在跟左边,右子树在根右边);
后序遍历:8 10 11 9 4 5 2 6 7 3 1 (规律:根在后;子树在根前且左子树比右子树靠前);
前序遍历:ABDECFG
中序遍历:DBEAFCG
后序遍历:DEBFGCA
前序遍历:1 2 4 3 5 7 6
中序遍历:2 4 1 5 7 3 6
后序遍历:4 2 7 5 6 3 1
4 文档小结