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

2021-10-05 01:24:16 字數 1326 閱讀 2548

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

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

leetcode題目鏈結

我們知道,前序遍歷的第乙個元素是根節點,用根節點在中序遍歷的結果陣列中找到該元素下標pos,就可以將中序遍歷的結果陣列分成兩個部分 [left,pos) 和 [pos+1,right)。在這兩部分中不斷遞迴就能夠構造出一棵二叉樹。

注意:除了沒有左右子樹,停止該部分子樹的構造,若先序遍歷結果的陣列遍歷結束,同樣停止繼續構造該樹。

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

/* 傳入引數的意義:

preorder 前序遍歷結果陣列

inorder 中序遍歷結果陣列

left 中序遍歷時的開始位置

right 中序遍歷時的結束位置

*/private treenode buildtreehelper

(int

preorder,

int[

] inorder,

int left,

int right)

if(index > preorder.length)

treenode root =

newtreenode

(preorder[index]);

index++

;// 根據該節點在中序遍歷結果中 的位置,把inorder陣列分成左右子樹兩部分

int pos =

findpos

(inorder,left,right,root.val)

; root.left =

buildtreehelper

(preorder, inorder, left, pos)

; root.right =

buildtreehelper

(preorder, inorder, pos +

1, right)

;return root;

}private

intfindpos

(int

inorder,

int left,

int right,

int tofind)

}return-1;}}

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

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

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

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

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

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