二叉树的遍历(前序,中序,后序)
来源:互联网 发布:净水器 储水桶 知乎 编辑:程序博客网 时间:2024/05/22 01:35
/**Copyright(c) 2011,烟台大学计算机学院学生*All rights reserved.*文件名称:二叉树的遍历(前序,中序,后序)*作 者:Mr_chang*完成日期: 2012年 12月15 日*/#include <iostream>using namespace std;struct Btnode{ int d; //数据域Btnode *lchild; //左指针域Btnode *rchild; //右指针域};//二叉链表类class Binary_Tree { private:Btnode *BT; //二叉链表根结点指针public: //成员函数 Binary_Tree() { BT=NULL; return; } //二叉链表初始化 void creat_Binary_Tree(int); //生成二叉链表 void pretrav_Binary_Tree(); //前序遍历二叉链表 void intrav_Binary_Tree(); //中序遍历二叉链表 void postrav_Binary_Tree(); //后序遍历二叉链表};static creat(Btnode *p, int k, int end){Btnode *q;int x;cin >>x; //输入结点值if (x!=end) //结点值为非结束符值 { q=new Btnode; //申请一个二叉链表结点q->d=x; q->lchild=NULL; q->rchild=NULL; if (k==1) p->lchild=q; //链接到左子树if (k==2) p->rchild=q; //链接到右子树creat(q, 1, end); //输入左子结点值creat(q, 2, end); //输入右子结点值}return 0;}//生成二叉链表void Binary_Tree::creat_Binary_Tree(int end){ Btnode *p;int x;cin >>x; //输入第一个结点值if (x==end) return; //第一个值为结束符值p=new Btnode; //申请二叉链表根结点p->d=x; p->lchild=NULL; p->rchild=NULL;BT=p; //二叉树根结点creat(p, 1, end); //输入左子结点值creat(p, 2, end); //输入右子结点值return;}static pretrav(Btnode *p){ if (p!=NULL){ cout <<p->d <<" "; //输出根结点值pretrav(p->lchild); //前序遍历左子树pretrav(p->rchild); //前序遍历右子树}return 0;}//前序遍历二叉链表void Binary_Tree::pretrav_Binary_Tree(){ Btnode *p;p=BT;pretrav(p); //从根结点开始前序遍历cout <<endl;return;}static intrav(Btnode *p){ if (p!=NULL){ intrav(p->lchild); //中序遍历左子树cout <<p->d <<" "; //输出根结点值intrav(p->rchild); //中序遍历右子树}return 0;}//中序遍历二叉链表void Binary_Tree::intrav_Binary_Tree(){ Btnode *p;p=BT;intrav(p); //从根结点开始中序遍历cout <<endl;return;}static postrav(Btnode *p){ if (p!=NULL){ postrav(p->lchild); //后序遍历左子树postrav(p->rchild); //后序遍历右子树cout <<p->d <<" "; //输出根结点值}return 0;}//后序遍历二叉链表void Binary_Tree::postrav_Binary_Tree(){ Btnode *p;p=BT;postrav(p); //从根结点开始后序遍历cout <<endl;return;}int main(){ Binary_Tree b; //建立一个二叉树对象b,数据域为整型cout <<"输入各结点值(-1为结束符值):" <<endl;b.creat_Binary_Tree(-1); //从键盘输入二叉树各结点值,以-1作为结束值cout <<"前序序列:" <<endl;b.pretrav_Binary_Tree(); //前序遍历二叉树对象bcout <<"中序序列:" <<endl;b.intrav_Binary_Tree(); //中序遍历二叉树对象bcout <<"后序序列:" <<endl;b.postrav_Binary_Tree(); //后序遍历二叉树对象breturn 0;}
总结:static creat(Btnode *p, int k, int end)应放到void Binary_Tree::creat_Binary_Tree(int end)的前面定义!!
static pretrav(Btnode *p)应放到void Binary_Tree::pretrav_Binary_Tree()的前面定义!!!
同理。。。。。。。。
- 二叉树的前序、中序、后序遍历
- 二叉树的遍历(前序,中序,后序)
- 二叉树的遍历:前序、中序、后序
- 二叉树的前序、中序、后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前序,中序,后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前序,中序,后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前序,中序,后序遍历
- 二叉树的前序,中序,后序遍历
- 二叉树的前序、中序、后序遍历
- 二叉树的前/中/后序遍历
- JAVA实现二叉树的前、中、后序遍历
- 二叉树的前、中、后序遍历详解
- 二叉树的前、中、后序遍历
- 经典alsa 录音和播放程序
- 黑马程序员_GUI回顾01
- 程序员写小说,也太难了
- Java JSON技术框架选型与实例
- 在DOS脚本中加入计数器
- 二叉树的遍历(前序,中序,后序)
- ubuntu中将用户加入sudo group的最好方法
- 网络编程简单例子
- 快速提高 Vi/Vim 使用效率的原则与途径
- Android adapter.notifyDataSetChanged无效
- ios设备识别
- 骨骼动画解释
- hdu 1114 Piggy-Bank 动态规划 之完全背包问题
- ios开发答疑录系列---iphone & ipad 图标大小和xcode配置