二叉树的遍历
来源:互联网 发布:python 盲水印 编辑:程序博客网 时间:2024/05/16 14:19
二叉树的遍历分前序、中序、和后序。下面分别给出代码:
首先定义二叉树:
typedef struct BiTNode{char data;BiTNode *lChild, *rChild;}BiTNode, *BiTree;
这里用二叉链表存储二叉树
前序:
void preOrder(BiTree T){//前序if(T){putchar(T->data);preOrder(T->lChild);preOrder(T->rChild);}}
前序 非递归版:
void preOrder2(BiTree T){//前序 非递归版 stack<BiTree>s;BiTree p = T;while(p || !s.empty()){if(p){putchar(p->data);s.push(p);p = p->lChild;}else{//printf("%d %c\n", s.size(), s.top()->data);p = s.top();s.pop();p = p->rChild;}}}
void inOrder(BiTree T){//中序if(T){inOrder(T->lChild);putchar(T->data);inOrder(T->rChild);}}
中序 非递归版:
void inOrder2(BiTree T){//中序 非递归版stack<BiTree>s;BiTree p = T;while(p || !s.empty()){if(p){s.push(p);p = p->lChild;}else{p = s.top();s.pop();putchar(p->data);p = p->rChild;}}}
后序:
void postOrder(BiTree T){//后序if(T){postOrder(T->lChild);postOrder(T->rChild);putchar(T->data);}}
后序 非递归版:
void postOrder2(BiTree T){//后序 非递归版stack<BiTree>s;BiTree p = T;BiTree r = NULL;while(p || !s.empty()){if(p){s.push(p);p = p->lChild;}else{p = s.top();if(p->rChild && p->rChild != r){p = p->rChild;s.push(p);p = p->lChild;}else{s.pop();putchar(p->data);r = p;p = NULL;}}}}
层次遍历:
void levelOrder(BiTree T){//层次遍历if(T == NULL)return ;queue<BiTree>q;BiTree p = T;q.push(p);while(!q.empty()){p = q.front();q.pop();putchar(p->data);if(p->lChild)q.push(p->lChild);if(p->rChild)q.push(p->rChild);}}
0 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 监听文本框事件几种方法总结
- Spark编程使用的基本指令
- 欢迎使用CSDN-markdown编辑器
- 做app的一些UI包
- nginx完美支持thinkphp3.2.2
- 二叉树的遍历
- Sqlite 清空表中所有数据 并重置自增长数据
- POJ 2823 Sliding Window(滑动窗口问题__优先队列||单调队列)
- Java研发求职指南
- Python资料合集
- android:四大组件之一content provider
- hadoop学习(一)-- centos 64位编译安装hadoop
- 菜鸟的处子秀
- 86 大文件下载(不合理方式)