劍指offer 7 重建二叉樹

2021-10-23 04:45:21 字數 790 閱讀 6306

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。

例如,給出

前序遍歷 preorder = [3,9,20,15,7]

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

返回如下的二叉樹:

3

/ \9 20

/ \

15 7

前序陣列:根左右

中序陣列:左根右

由此知道,前序遍歷的第乙個節點是根節點。

然後遍歷中序陣列,找到根所在的位置,那麼在中序陣列根節點的前面就是左子樹,根節點後面的就是右子樹。

由第二步的根節點位置,可以確定左右子樹的長度。通過中序陣列左右陣列的長度,分別得到前序陣列左右陣列的長度。

這樣將這顆樹分成了左子樹,根節點,右子樹。同理對左右子樹進行同樣的操作,遞迴求解。

**實現:

class

treenode

}public

class

offer7_rebuildbinarytree

private treenode helper

(int

pre,

int prestart,

int preend,

int[

] in,

int instart,

int inend)

}return root;

}}

劍指offer7 重建二叉樹

輸入一棵二叉樹前序遍歷和中序遍歷的結果,請重建該二叉樹。注意 二叉樹中每個節點的值都互不相同 輸入的前序遍歷和中序遍歷一定合法 樣例 給定 前序遍歷是 3,9,20,15,7 中序遍歷是 9,3,15,20,7 返回 3,9,20,null,null,15,7,null,null,null,null...

劍指offer7 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的頭節點。根據先序序列第乙個數確定樹的根節點,在中序序列中找到這個數所在的位置,此處左邊為左子樹,右邊為右子樹,根據遞迴建立二叉樹。...

劍指offer 7 重建二叉樹

因為各種各樣的原因,要開始準備春招,所以開始刷劍指offer 第二版 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。這個是個二叉樹很基礎的題啦,需要用遞迴來實現。主要講解在書的6...