动态二叉树后序和中序建树并层序遍历
2018-02-20 16:40
204 查看
#include<stdio.h> #include<queue> //给出后序和中序求层序 using namespace std; int ins[31],posts[31],n; struct Node{ int data; Node *lchild; Node *rchild; }; void Layer(Node *root){//保证输出时没有空格 int num=0; queue<Node*> q; q.push(root); while(!q.empty()){ Node *temp=q.front(); num++; printf("%d",temp->data); if(num!=n) printf(" "); q.pop(); if(temp->lchild) q.push(temp->lchild); if(temp->rchild) q.push(temp->rchild); } } Node *create(int postL,int postR,int inL,int inR){//记住一定要有返回值 if(postL>postR) return NULL; Node *root=new Node; root->data=posts[postR]; int i; for(i=inL;i<=inR;i++) if(ins[i]==posts[postR]) break; int left=i-inL; root->lchild=create(postL,postL+left-1,inL,i-1); root->rchild=create(postL+left,postR-1,i+1,inR); return root; } int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&posts[i]); for(int i=0;i<n;i++) scanf("%d",&ins[i]); Node *root=create(0,n-1,0,n-1); Layer(root); return 0; }
相关文章推荐
- 动态二叉树的先序、中序、后序和层序遍历及转换为静态二叉树
- PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
- 二叉树先序,中序,后序、层序遍历递归和非递归实现
- PAT-A1099. 二叉树-中序建树 层序输出
- 非递归遍历二叉树的四种策略-先序、中序、后序和层序
- 遍历二叉树(四种方式:前序、中序、后序、层序)
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- 二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现(转)
- 二叉树的先序/中序/后序(递归、非递归)+层序遍历
- 二叉树的遍历方法之层序-先序-中序-后序遍历的简单讲解和代码示例
- java版的二叉树的 前序、中序、后序、层序 遍历
- 二叉树先序、中序、后序、层序遍历(递归、非递归)
- 二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现(转)
- 二叉树的遍历:前序、中序、后序、层序的非递归实现
- PAT 1020(由二叉树的中序和后序,求层序遍历) 1086(由二叉树的中序和先序求后序遍历)
- 非递归遍历二叉树的四种策略-先序、中序、后序和层序
- 二叉树的遍历(前序,中序,后序,层序)--递归和非递归算法实现
- 二叉树的创建,前序,中序,后序,层序遍历
- Java实现二叉树的前序、中序、后序、层序遍历(递归方法)
- 遍历二叉树(前序、中序、后序、层序)