算法实验 层序列表问题(二叉树)
来源:互联网 发布:杭州富谦网络 编辑:程序博客网 时间:2024/05/01 18:52
问题描述:对树中结点按层序列表是指先列树根,然后从左到右一次列出所有深度为1的节点,再从做到右地列出深度为2的节点,等等。层序列表问题要求对一颗给定的二叉树按层序列表。
数据输入:第一行为一个整数n,表示给定的二叉树有n个顶点。接下来的n行中,每行有3个整数a,b,c 分别表示编号为a的节点的左儿子b和右儿子c。
5
1 4 2
4 3 0
2 5 0
3 0 0
5 0 0
output:
1 4 2 3 5
代码:
#include<iostream>#include<queue>using namespace std;//全局变量int t1,t2,t3;typedef struct BTNode{ int data ;struct BTNode *Lchild , *Rchild ;}BTNode ;queue<BTNode *> q;void *Preorder_Create_BTree(BTNode *&T,int k);void InOrder(BTNode *t);void InOrder(BTNode *t);void add(BTNode *&t,int m){ if (t){ // T=NULL时,二叉树为空树,不做任何操作if(t->data == m)//符合条件,则进行左孩子和右孩子添加{Preorder_Create_BTree(t->Lchild,t2);Preorder_Create_BTree(t->Rchild,t3);}// 通过函数指针*visit访问根结点,以便灵活完成相应的操作elseadd(t->Lchild,m); // 中序遍历左子树add(t->Rchild,m); // 中序遍历右子树 }}/*//前序遍历void InOrder(BTNode *t){ if (t){ // T=NULL时,二叉树为空树,不做任何操作cout<<t->data<<" "; // 通过函数指针*visit访问根结点,以便灵活完成相应的操作InOrder(t->Lchild); // 中序遍历左子树InOrder(t->Rchild); // 中序遍历右子树 }}*///层序遍历void levelOrder(BTNode *t){BTNode *k;q.push(t);while(!q.empty()){k = q.front();q.pop();cout<<k->data<<" ";if(k->Lchild) q.push(k->Lchild);if(k->Rchild) q.push(k->Rchild);}}int main(){int n,i,flag= 1;BTNode * bt;Preorder_Create_BTree(bt,0);cin>>n;for(i=0;i<n;i++){cin>>t1>>t2>>t3;if(flag)//第一次应该先添加节点{Preorder_Create_BTree(bt,t1);Preorder_Create_BTree(bt->Lchild,t2);Preorder_Create_BTree(bt->Rchild,t3);flag = 0;}//else//之后每添加一次需要再遍历二叉树,符合条件然后添加add(bt,t1);}//cout<<"中序遍历:";//InOrder(bt);//cout<<endl;levelOrder(bt);return 0;}void *Preorder_Create_BTree(BTNode *&T,int k) /* 建立链式二叉树,返回指向根结点的指针变量 */{ //char ch ; //ch=getchar() ;if (k==0) { T=NULL; return(T) ; }else{ T=(BTNode *)malloc(sizeof(BTNode)) ;T->data=k;Preorder_Create_BTree(T->Lchild,0) ;Preorder_Create_BTree(T->Rchild,0) ; }}
0 1
- 算法实验 层序列表问题(二叉树)
- 数据结构实验之二叉树七:叶子问题(层序遍历输出叶子)
- 【算法】二叉树遍历(层序)
- 分治算法实验-单峰序列问题
- 数据结构与算法分析以层序列出二叉树节点
- 数据结构实验之二叉树五:层序遍历(二叉树+队列)
- 层序遍历二叉树与二叉树序列化
- 数据结构与算法问题 判断两序列是否为同一二叉搜索树序列
- 按层Z型遍历二叉树(算法)
- 【Leetcode】二叉树层遍历算法
- 递归按层遍历二叉树算法
- 二叉树的层序遍历算法
- 二叉搜索树的后序遍历序列(算法)
- 数据结构实验之二叉树五:层序遍历
- 数据结构实验之二叉树五:层序遍历
- 数据结构实验之二叉树五:层序遍历
- 数据结构实验之二叉树五:层序遍历
- 数据结构实验之二叉树五:层序遍历
- hibernate集合映射inverse和cascade详解
- 恶心的www.3600.com
- 超级简单JS网页倒计时代码
- 模板显式实例化 explicit template instantiation
- [转]Java中常用的加密方法(JDK)
- 算法实验 层序列表问题(二叉树)
- C# webBrowser 获取框架内Html页面内容
- JVM如何理解Java泛型类
- 首个app应用程序上架,留个纪念。
- 前缀式(波兰式)与后缀式(逆波兰式)求解表达式的值,中缀式(一般算数表达式不做讨论)
- Java中的泛型方法
- GoodJob(找工作助手/辅助决策)的帮助
- 关于网页中的meta标签
- 找工作助手GoodJob