根據一棵樹的中序遍歷與後序遍歷構造二叉樹。

2021-10-17 19:30:20 字數 1272 閱讀 7161

根據一棵樹的中序遍歷與後序遍歷構造二叉樹。

注意: 你可以假設樹中沒有重複的元素。

例如,給出

//中序遍歷 inorder = [9,3,15,20,7]

//後序遍歷 postorder = [9,15,7,20,3]

//返回如下的二叉樹:

// 3

// / \

// 9 20

// / \

// 15 7

private

int index2;

public treenode buildtree

(int

preorder,

int[

] postorder)

return

buildtreehelper

(preorder,postorder,

0,postorder.length);}

private treenode buildtreehelper

(int

preorder,

int[

] postorder,

int left,

int right)

if(index2 >= preorder.length)

treenode root =

newtreenode((

char

) preorder[index2]);

index2++

;int pos =

find

(postorder,left,right,root.val)

; root.right =

buildtreehelper

(preorder,postorder,pos+

1,right)

; root.left =

buildtreehelper

(preorder,postorder,left,pos)

;//乙個樹的先序遍歷的映象和後序遍歷的逆置相同,,,,根右左

//所以先逆置後序遍歷,再調整左右根的列印位置

return root;

}private

intfind

(int

inorder,

int left,

int right,

int tofind)

}return-1

;}

根據一棵樹的中序遍歷與後序遍歷構造二叉樹

根據一棵樹的中序遍歷與後序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 中序遍歷 inorder 9,3,15,20,7 後序遍歷 postorder 9,15,7,20,3 返回如下的二叉樹 3 9 20 15 7public int postindex 0 public tre...

已知一棵樹前中序遍歷,怎麼求後序遍歷

已知一棵樹的前序遍歷是 youzanstyle 而中序遍歷是 uoznayyltse 怎麼求後序遍歷?我們可以通過前序遍歷得到根節點,通過中序遍歷得到左右子樹。樹根節點是y,左子樹是uozna,右子樹是yltse uozna根節點是o,左子樹是u,右子樹是zna zna根節點是z,沒有左子樹,右子樹...

根據先序遍歷的結果建立一棵樹 D S

根據先序遍歷的結果建立一棵樹 根據先序遍歷的結果還原一棵樹 則該樹是不確定的 例如 先序遍歷的結果abc 有兩種形式 如果要還原一棵樹,除了要知道先序遍歷的結果,還需要知道樹的位置。如果用 表示空樹,則左邊的二叉樹為 ab c 而右邊的二叉樹為 abc 已只先序遍歷的結果,在建立樹時,先建立根節點 ...