给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
来源:互联网 发布:pvp网游 知乎 编辑:程序博客网 时间:2024/06/02 02:58
这里没再用到先申请大Node数组的方法了,想练练写动态内存分配和释放的,一次OK了,也没怎么出错啊,开心~
方法二 - Code:
//给出一个二叉树的先序遍历和中序遍历,输出它的后序遍历//直接构造的方法白书已给出。这里是先递归构造二叉树,然后进行后序遍历。 #include<stdio.h>#include<string.h> #include<stdlib.h>#define MAXN 1000typedef struct node{ char data; struct node *left,*right; }Node;void postorder(Node *root);Node* build(int n,char *s1,char *s2);Node* newNode();void remove_tree(Node* root);char s1[MAXN],s2[MAXN];int main(){ while(scanf("%s%s",s1,s2)==2) { int n=strlen(s1); Node *root=build(n,s1,s2); postorder(root); printf("\n"); remove_tree(root); } } void postorder(Node *root){ if(root==NULL) return; postorder(root->left); postorder(root->right); printf("%c",root->data);}Node* build(int n,char *s1,char *s2){ if(n<=0) return NULL; Node *r=newNode(); r->data=s1[0]; int p=strchr(s2,s1[0])-s2; r->left=build(p,s1+1,s2); r->right=build(n-1-p,s1+1+p,s2+p+1); return r; }Node* newNode(){ Node* u=(Node*)malloc(sizeof(Node)); if(u!=NULL) { u->data=0; u->left=u->right=NULL; } return u;}void remove_tree(Node* root){ if(root!=NULL) { remove_tree(root->left); remove_tree(root->right); free(root); } }
#include<stdio.h>#include<string.h>#define MAXN 256void build(int n,char *s1,char *s2,char *s);int main(){ char s1[MAXN],s2[MAXN],ans[MAXN]; while(scanf("%s%s",s1,s2)==2) { int n=strlen(s1); build(n,s1,s2,ans); ans[n]='\0'; printf("%s\n",ans); } return 0;}void build(int n,char *s1,char *s2,char *s){ if(n<=0) return; int p=strchr(s2,s1[0])-s2; build(p,s1+1,s2,s); build(n-p-1,s1+p+1,s2+p+1,s+p); s[n-1]=s1[0]; }
0 0
- 给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
- 已知二叉树的先序遍历和中序遍历序列,输出后序遍历序列
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 二叉树树的先序遍历,中序遍历和后序遍历
- 根据中序遍历和后序遍历求二叉树的先序遍历
- 由 先序遍历序列和中序遍历序列 求出 后序遍历的序列
- 给定二叉树的先序遍历中序遍历,求后序遍历
- 二叉树的先序遍历,后序遍历,中序遍历,层次遍历
- 二叉树的遍历(1)--先序遍历,中序遍历,后序遍历
- 二叉树的遍历代码(先序遍历,中序遍历,后序遍历)
- 已知二叉树的先序、中序遍历序列,求其后序遍历结果。(hduoj1710)
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 六、树和二叉树--(2)二叉树的先序遍历、中序遍历、后序遍历
- 【二叉树】 根据先序和中序遍历输出后序遍历
- C实现二叉树的先序遍历,中序遍历,后序遍历
- UI游戏实现 关灯游戏
- sqlsrv_execute用法
- Java实现泛型委托类似C#Action<T>
- Windows 实现的 OSI 七层模型结构图
- 为Struts 2.0做好准备
- 给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
- UVA537
- 凸多边形区域划分为三角形问题
- 火狐浏览器中页面使用a标签提交后台执行两次,组件导致
- 关于java的视频资料分享
- 取代DataTable.Select方法,并动态拼接Lambda表达式
- EEPlat引擎运行流程
- 电路板阻抗原理知识及应用
- 门禁管理系统 项目计划书