PAT 1020 Tree Traversals
来源:互联网 发布:中国网络空间安全网 编辑:程序博客网 时间:2024/05/16 17:02
题目的目的是很简单明了的,就是给定一棵二叉树的后序序列和中序序列,要求我们给出层次遍历的序列。
本题的关键点在于二叉树的重建和层次遍历。
本题是利用后序序列和中序序列来进行二叉树的重建,参考函数如下:
Node * rebuild(int *post,int *in,int len ){ if(len == 0) return NULL; //判断是否为空树 int i=len-1; while(post[len-1] != in[i])i--;//查找根节点的位置 Node *p1; p1=new Node; p1->data=post[len-1]; p1->left=rebuild(post,in,i);//左子树的重建 p1->right=rebuild(post+i,in+i+1,len-i-1); //右子树的重建 return p1; }关于层次遍历,小编借鉴了下课件,运用的是循环数组来实现:
void levelorder(Node *p){Node *q,*circle[MaxSize]; //建立循环数组int front=-1,rear=0,flag=0;circle[rear]=p;while(front!=rear){front=(front+1)%MaxSize;q=circle[front];if(flag==0)//用来判断是否为根节点{flag=1;printf("%d",q->data);}elseprintf(" %d",q->data);if(q->left!=NULL ){rear=(rear+1)%MaxSize;circle[rear]=q->left;}if(q->right!=NULL){rear=(rear+1)%MaxSize;circle[rear]=q->right;}}}总结:
最近做题目挺适合提高自己的编程能力的,所以开始写写博文记录下自己的成长,一方面自己可以回头看看编写过的代码回顾算法的等,另一方面也可以跟大家一起分享下,由于小编编程能力尚属中下,望众大牛勿喷。有优化的方法或建议恳请大家留言,小编很希望能持续提升自己的编程水平。
- pat 1020 Tree Traversals
- PAT 1020 Tree Traversals
- PAT 1020 Tree Traversals
- PAT 1020 Tree Traversals (25)
- pat advanced 1020 Tree Traversals
- 浙大PAT 1020题 1020. Tree Traversals
- Pat(Advanced Level)Practice--1020(Tree Traversals)
- 【PAT】1020. Tree Traversals
- PAT 1020. Tree Traversals
- PAT 1020. Tree Traversals
- PAT--1020. Tree Traversals
- PAT 1020. Tree Traversals
- PAT 1020. Tree Traversals
- PAT A1020. Tree Traversals
- 【PAT】1020. Tree Traversals
- Tree Traversals Again (PAT)
- PAT [A1020]-Tree Traversals
- pat 1020. Tree Traversals (25)
- MFC 常见的窗口,空间句柄获取问题总结
- maven学习(1)
- TestNG 教程3 – 忽略测试方法
- nanopb的使用
- html样式标签是不能绑定事件
- PAT 1020 Tree Traversals
- ARM9开Icache代码
- Ural 1225. Flags DP
- LINUX下的IIC驱动(三)
- 解决ubuntu上打不开Rubymine的问题
- 安卓:进程与线程(线程篇)
- ROS ccny_vision: image_transport
- JSP起源、JSP的运行原理、JSP的执行过程
- NYOJ 47-过河问题