二叉樹已知中序和先後序中任意乙個,求另一序的排列

2021-09-26 10:34:02 字數 1445 閱讀 3983

//遞迴演算法

public

static

void

main

(string[

] args)

;int

inorder=

;post

(preorder,inorder,0,

0,preorder.length-1)

;}//5個引數,先序陣列,中序陣列,根位置,開始下標,結束下標

public

static

void

post

(int

pre,

int[

] in,

int root,

int start,

int end)

int i=start;

while

(i!=pre[root]

)post

(pre,in,root+

1,start,i-1)

;post

(pre,in,root+i+

1-start,i+

1,end)

; system.out.

println

(pre[root]);

//後序左右根,所以先遞迴後輸出

}

//遞迴演算法

public

static

void

main

(string[

] args)

;int

inorder=

;pre

(postorder,inorder,postorder.length-1,

0,postorder.length-1)

;}//5個引數,後序陣列,中序陣列,根位置,開始下標,結束下標

public

static

void

pre(

int[

] post,

int[

] in,

int root,

int start,

int end)

int i=start;

while

(i!=post[root]

) system.out.

println

(post[root]);

//先序根左右,所以先輸出後遞迴

pre(post,in,root-end+i-

1,start,i-1)

;pre

(post,in,root-

1,i+

1,end)

;}

//順便補充一下,求了這兩種情況,肯定有人會問了,那已知先序和後序,怎麼求中序呢

如果已知先序和後序,那麼中序的情況是不唯一的,要求的話只能求中序可能的情況

二叉樹 已知先序和中序求後序,已知中序和後序求先序

樹的三種遍歷方式的遍歷順序 先序遍歷 根 左子樹 右子樹 特點 第乙個元素為根 中序遍歷 左子樹 根 右子樹 特點 根的兩邊分別為左子樹和右子樹 後序遍歷 左子樹 右子樹 根 特點 最後乙個元素為根 有如下圖的二叉樹 其先序 中序 後序遍歷分別為 dbacegf abcdefg acbfged。1 ...

二叉樹已知先序中序求後序 已知中序後序求先序

在做資料結構面試題的時候我們會經常發現有關二叉樹的題目總是這樣的 栗子 已知某二叉樹先序為 中序為 求後序 已知某二叉樹中序為 後序為 求先序 需要注意的是 我們只能夠通過已知先序中序求後序或已知中序後序求先序,而不能夠已知先序和後序求中序 下面總結一下兩種題的做法 首先回顧知識點 第一種 已知乙個...

已知二叉樹先序和中序,求後序。

從處 一 已知前序 中序遍歷,求後序遍歷 例 前序遍歷 gdafemhz 中序遍歷 adefghmz 畫樹求法 第一步,根據前序遍歷的特點,我們知道根結點為g 第二步,觀察中序遍歷adefghmz。其中root節點g左側的adef必然是root的左子樹,g右側的hmz必然是root的右子樹。第三步,...