前序中序出後序 二叉樹

2021-10-01 19:07:00 字數 1388 閱讀 5471

描述

輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。

輸入輸入檔案為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

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 ...