黑马程序员技术交流社区

标题: 二叉树遍历问题(前序,中序,后序) [打印本页]

作者: 张继鲁    时间: 2014-2-24 09:21
标题: 二叉树遍历问题(前序,中序,后序)
            a
           / \
          b   c
         /\   /
         e f  g
思想方法
作者: 梦里花-静    时间: 2014-2-24 09:39
前序的遍历顺序是根,左子树,右子树,这个二叉树的前序遍历是:abefcg
中序的遍历顺序是左子树,根,右子树,这个二叉树的前序遍历是:ebfagc
后序的遍历顺序是左子树,右子树,根,这个二叉树的前序遍历是:efbgca
具体的你可以看一下视频等,还有个链接 你也可以看一下http://baike.so.com/doc/819994.html
作者: syw02014    时间: 2014-2-24 09:47
在C/C++语言中,这是数据结构的问题,牵涉到对二叉树的操作,这里主要是对二叉树的遍历中最常见的方法:  前序,中序,后序;

先(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)访问根结点;
(2)先序遍历左子树;
(3)先序遍历右子树。


中(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)中序遍历左子树;
(2)访问根结点;
(3)中序遍历右子树。

后(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)后序遍历左子树;
(2)后序遍历右子树;
(3)访问根结点。
给你一个C++的算法:
void Btree::BinTraversepre(BitTree BT)//按先序输出二叉树中的所有结点{        if(BT)        {                cout<<BT->data<<" ";                BinTraversepre(BT->lchild);                BinTraversepre(BT->rchild);        }}
void Btree::BinTraversein(BitTree BT)//按中序输出二叉树中的所有结点{        if(BT)        {        BinTraversein(BT->lchild);                cout<<BT->data<<" ";                BinTraversein(BT->rchild);        }}
void Btree::BinTraversepost(BitTree BT)//按后序输出二叉树中的所有结点{        if(BT)        {                BinTraversepost(BT->lchild);                BinTraversepost(BT->rchild);                cout<<BT->data<<" ";        }}

            a
           / \
          b   c
         /\   /
         e f  g
前序遍历是:abefcg中序遍历是:ebfagc后序遍历是:efbgca
还有一个例子给你两个附件;


图片1.png (44.48 KB, 下载次数: 15)

图片1.png

图片2.png (52.19 KB, 下载次数: 23)

图片2.png

作者: 丶小天    时间: 2014-2-24 17:05
树是一种数据结构,二叉树是树的一种。他的结构是,根,左儿子,右儿子。。

前序,中序和后序是树遍历的三种不同形式
前序遍历,也叫先根遍历,遍历的顺序是,根,左子树,右子树
中序遍历,也叫中跟遍历,顺序是 左子树,根,右子树
后序遍历,也叫后跟遍历,遍历顺序,左子树,右子树,根




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2