【二叉樹】前中序求後序,中後序求前序
前中序求後序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
//#pragma comment(linker, "/STACK:102400000,102400000")
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF=0x3f3f3f3f;
const int N=100;
const LL mod = 1e9+7;
int Find(char c,char A[],int l,int r){
for(int i=l; i<=r; i++){
if(A[i]==c)
return i;
}
}
void pronum(char pre[],int pre_l,int pre_r,char in[],int in_l,int in_r){
if(in_l > in_r)
return ;
if(in_l == in_r){
printf("%c",in[in_l]);
return ;
}
char root=pre[pre_l];
//printf("%c\n",root);
int id=Find(root,in,in_l,in_r);
//printf("%d\n",id);
pronum(pre,pre_l+1,pre_l+id-in_l,in,in_l,id-1);
pronum(pre,pre_l+id-in_l+1,pre_r,in,id+1,in_r);
printf("%c",root);
}
int main()
{
char pre[N],in[N];
while(~scanf("%s%s",pre,in))
{
int lenp = strlen(pre);
int leni = strlen(in);
pronum(pre,0,lenp-1,in,0,leni-1);
puts("");
}
}
中後序求前序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
//#pragma comment(linker, "/STACK:102400000,102400000")
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF=0x3f3f3f3f;
const int N=100;
const LL mod = 1e9+7;
int Find(char c,char A[],int l,int r){
for(int i=l; i<=r; i++){
if(A[i]==c)
return i;
}
}
void pronum(char pos[],int pos_l,int pos_r,char in[],int in_l,int in_r){
if(in_l > in_r)
return ;
if(in_l == in_r){
printf("%c",in[in_l]);
return ;
}
char root=pos[pos_r];
int id=Find(root,in,in_l,in_r);
//printf("%c\n",root);
//printf("%d\n",id);
printf("%c",root);
pronum(pos,pos_l,pos_l+id-in_l-1,in,in_l,id-1);
pronum(pos,pos_l+id-in_l,pos_r-1,in,id+1,in_r);
}
int main()
{
char pos[N],in[N];
while(~scanf("%s%s",in,pos))
{
int lenp = strlen(pos);
int leni = strlen(in);
pronum(pos,0,lenp-1,in,0,leni-1);
puts("");
}
}
相關文章
- 二叉樹 ---- 前序 中序 後序 知二求一二叉樹
- 已知二叉樹的先序和後序求任意一中序二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 還原二叉樹(先序+中序-〉後序)二叉樹
- L2_006樹的遍歷(後序+中序->前序/層序)
- 二叉樹的前序、中序、後序的遞迴和迭代實現二叉樹遞迴
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 後序+中序(前序+中序)重構樹,嚴格O(N)演算法演算法
- 刷題筆記:樹的前序、中序、後序遍歷筆記
- 資料結構實驗之二叉樹八:(中序後序)求二叉樹的深度資料結構二叉樹
- 二叉樹的前中後序遍歷二叉樹
- 二叉樹迭代器(中序遞迴、前序和後序遍歷)演算法二叉樹遞迴演算法
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- 二叉樹中序和後序遍歷表示式二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- python-二叉樹:前、中、後、層序遍歷Python二叉樹
- 演算法 -- 實現二叉樹先序,中序和後序遍歷演算法二叉樹
- 從前序與中序構造二叉樹二叉樹
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 二叉樹:前中後序迭代方式統一寫法二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 二叉樹的先中後序遍歷二叉樹
- 二叉樹的先,中,後序遍歷二叉樹
- 二叉樹--後序遍歷二叉樹
- 【每日一題】二叉樹的前中後序非遞迴整理每日一題二叉樹遞迴
- 中序先序到後序 洛谷1827
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 刷題系列 - 中序和後序遍歷佇列,構造對應二叉樹;佇列二叉樹
- 106. 從中序與後序遍歷序列構造二叉樹——Java實現二叉樹Java
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- LeetCode 285 & 510. 二叉樹中序後繼 I & IILeetCode二叉樹
- PHP基於非遞迴演算法實現先序、中序及後序遍歷二叉樹操作示例PHP遞迴演算法二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹