描述
輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。
輸入輸入檔案為tree.in,共兩行,第一行乙個字串,表示樹的先序遍歷,第二行乙個字串,表示樹的中序遍歷。樹的結點一律用小寫字母表示。
輸出輸出檔案為tree.out,僅一行,表示樹的後序遍歷序列。
樣例輸入
abdec
dbeac
樣例輸出
debca
方法1
#include
#include
using
namespace std;
void
abc(string x,string y,
int l)
string x1,x2;
string y1,y2;
x1 = x.
substr(1
,r);
x2 = x.
substr
(r+1
,l-r-1)
; y1 = y.
substr(0
,r);
y2 = y.
substr
(r+1
,l-r-1)
;abc
(x1,y1,r)
;abc
(x2,y2,l-r-1)
; cout/ cout<}
intmain()
方法2#include
#include
#include
#include
#include
#include
#include
using
namespace std;
char str1[30]
,str2[30]
;int loc;
struct nodetree[50]
;void
postorder
(node* t)
node*
create()
node*
build
(int s1,
int e1,
int s2,
int e2)
if(i!=s2)
ret-
>l=
build
(s1+
1,s1+i-s2,s2,i-1)
;if(i!=e2)
ret-
>r=
build
(s1+i-s2+
1,e1,i+
1,e2)
;return ret;
}int
main()
二叉樹遍歷(前序,中序,後序
二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...
前序建立二叉樹 前序 中序 後序遍歷二叉樹
二叉樹的建立 如果要在記憶體中建立乙個如下左圖這樣的樹,wield 能讓每個結點確認是否有左右孩子,我們對它進行擴充套件,變成如下右圖的樣子,也就是將二叉樹中的每個結點的空指標引出乙個虛結點,其值為乙個特定值,比如 稱之為擴充套件二叉樹。擴充套件二叉樹就可以做到乙個遍歷序列確定一棵二叉樹了。如前序遍...
前序中序和中序後序還原二叉樹
前序中序還原二叉樹 struct node creat int len,char str1,char str2 由先序序列和中序序列建立二叉樹 root lchild creat i,str1 1,str2 建立左子樹 root rchild creat len i 1,str1 i 1,str2 ...