树的创建及层序先中后序遍历
来源:互联网 发布:淘宝客服薪资待遇 编辑:程序博客网 时间:2024/06/05 11:02
#include<stdlib.h>#include"Queue.h"typedef BinTree Element; //定义队列元素类型typedef int ElementType;typedef struct TNode *BinTree;struct TNode {ElementType data;BinTree left;BinTree right;}; BinTree CreatTree(); //层序生成二叉树,输入data值为0则该结点为空void LevelorderTraveral(BinTree BT);void PreorderTraversal(BinTree BT); //先序遍历void InorderTraversal(BinTree BT); //中序遍历void PostorderTraversal(BinTree BT); //后序遍历int main(){BinTree BT = CreatTree();LevelorderTraveral(BT);cout << endl;InorderTraversal(BT);cout << endl;PreorderTraversal(BT); //先序遍历cout << endl;PostorderTraversal(BT); //后序遍历cout << endl;return 0;}
BinTree CreatTree(){ElementType data;cin >> data;if (!data) return NULL;BinTree BT,head; //设置局部执行指针BT,以及头结点指针headProToQueue Q = CreatQueue(100); //定义一个容量为一百的队列Q;head = BT = (BinTree)malloc(sizeof(struct TNode));BT->data = data;BT->left = NULL;BT->right = NULL;AddQ(Q, BT);while (!IsEmpty(Q)){BT = DeleteQ(Q);ElementType left, right;cin >> left >> right;if (left){BT->left = (BinTree)malloc(sizeof(struct TNode));BT->left->data = left;BT->left->left = NULL;BT->left->right = NULL;AddQ(Q, BT->left);}if (right){BT->right= (BinTree)malloc(sizeof(struct TNode));BT->right->data = right;BT->right->left = NULL;BT->right->right = NULL;AddQ(Q, BT->right);}}return head;}void LevelorderTraveral(BinTree BT){if (!BT) return;ProToQueue Q = CreatQueue(100);cout << BT->data << " ";AddQ(Q, BT);while (!IsEmpty(Q)){BinTree T = DeleteQ(Q);if (T->left){cout << T->left->data << " ";AddQ(Q, T->left);}if (T->right){cout << T->right->data << " ";AddQ(Q, T->right);}}}void InorderTraversal(BinTree BT) //中序遍历{if (!BT) return;InorderTraversal(BT->left);cout << BT->data << " ";InorderTraversal(BT->right);}void PreorderTraversal(BinTree BT) //先序遍历{if (!BT) return;cout << BT->data << " ";PreorderTraversal(BT->left);PreorderTraversal(BT->right);}void PostorderTraversal(BinTree BT) //后序遍历{if (!BT) return;PostorderTraversal(BT->left);PostorderTraversal(BT->right);cout << BT->data << " ";}
阅读全文
0 0
- 树的创建及层序先中后序遍历
- 二叉树的创建及遍历方式
- 二叉树的创建及遍历
- 链式二叉树的创建及遍历
- 链式二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建,及遍历 操作
- 二叉树的创建及遍历
- 二叉树的创建及遍历实现
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉查找树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的概念及创建及遍历
- 二叉树创建及遍历
- Linux私房菜学习-第7章Linux文件与目录管理
- CodeForces 892B Wrath
- How To Completely Remove 360 Total Security From Windows 7 and 8
- Shell常用命令与工具(二)
- 四种内部类
- 树的创建及层序先中后序遍历
- 服务器(Linux server/Win server)常用端口介绍
- [apue]UNIX高级环境编程ver3勘误表[持续更新]
- 操作系统处理机调度算法模拟实现
- jqgrid is not a function
- nitoj_244_很有意思的贪心
- 正则表达式
- Unity加载资源的3种方法
- C++中const、volatile、mutable的用法