由中序遍歷和後序遍歷得到前序遍歷(樹的遍歷)

2021-10-03 20:58:14 字數 839 閱讀 3890

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(≤30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹的前序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

72 3 1 5 7 6 4

1 2 3 4 5 6 7

輸出樣例:

4 1 3 2 6 5 7

#include

using

namespace std;

int a[31]

;int b[31]

;typedef

struct nodenode,

*tree;

tree build

(int

*x,int

*y,int n)

int*p=x;

while

(p) tree t =

new node;

t->data=

*p;int len=p-x;

t->lchild=

build

(x,y,len)

; t-

>rchild=

build

(p+1

,y+len,n-len-1)

;return t;

}void

print

(tree t)

}int

main()

前序遍歷 中序遍歷 後序遍歷

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...

前序遍歷 中序遍歷 後序遍歷

遍歷是針對根節點的 前序遍歷順序 根節點 左子樹 右子樹 中序遍歷順序 左子樹 根節點 右子樹 後序遍歷順序 左子樹 右子樹 根節點 深入一點去理解這個排序順序是這樣的 前序遍歷 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。中...

前序遍歷 中序遍歷 後序遍歷

前序遍歷 dlr 前序遍歷也叫做先根遍歷 先序遍歷,可記做根左右。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹 為空則結束返回,否則 1 訪問根結點。2 前序遍歷左子樹。3 前序遍歷右子樹 需要注意的是 遍歷左右...