二叉树的遍历
来源:互联网 发布:360怎么禁止软件联网 编辑:程序博客网 时间:2024/06/08 06:14
#include<stdio.h>#include<malloc.h>#define Maxsize 100typedef char dataType;struct TreeNode{dataType data;TreeNode *left,*right;};void CreateTree(TreeNode *&t,dataType x){dataType d;scanf("%c ",&d);if(d == x){t = NULL;}else{t = (TreeNode*)malloc(sizeof(TreeNode));t->data = d;CreateTree(t->left,x);CreateTree(t->right,x);}}//先序遍历二叉树 void Perorder(TreeNode *t){if(t){printf("%c ",t->data);Perorder(t->left);Perorder(t->right);}}//中序遍历二叉树void Inorder(TreeNode *t){if(t){Inorder(t->left);printf("%c ",t->data);Inorder(t->right);} }//后序遍历二叉树void Postorder(TreeNode *t){if(t){Postorder(t->left);Postorder(t->right);printf("%c ",t->data);} } //层次序遍历二叉树void Leverorder(TreeNode *t){TreeNode *q[Maxsize];int front = 0,rear = 0;TreeNode *p;if(t == NULL) return;q[rear] = t;rear = (rear+1) % Maxsize;while(front!=rear){p = q[front];front = (front+1) % Maxsize;printf("%c ",p->data);if(p->left){q[rear] = p->left;rear = (rear+1) % Maxsize;} if(p->right){q[rear] = p->right;rear = (rear+1) % Maxsize;}}} int main(){TreeNode *t;CreateTree(t,'#');printf("先序遍历:");Perorder(t);printf("\n");printf("中序遍历:");Inorder(t);printf("\n");printf("后序遍历:");Postorder(t);printf("\n");printf("层序遍历:");Leverorder(t);printf("\n");}
阅读全文
1 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 学习感悟
- 编写一个函数link_sort(),用链表将数组int a[] = {49, 38, 65, 97, 76, 13, 27} 按升序排序
- 剑指offer 输出链表倒数第k个结点
- oracle和mysql在创建表、更新表(增加、修改、删除字段)、删除表的区别与联系
- Eclipse 项目导入 Android Studio,依赖项目不让 copy 到 Android Studio 项目
- 二叉树的遍历
- 简易实现后缀表达式
- 快手2017校园招聘_笔试_面试
- 实现checkBox readonly功能的两种方式
- hdu_1102_prime
- flume+kafka+storm
- Java技术——你真的了解String类的intern()方法吗
- mysql数据库
- 最简单的vue上传图片