《劍指offer》 7 重建二叉樹

2021-10-03 16:05:28 字數 1022 閱讀 4032

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重新構造出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中不包含重複的數字。例如輸入的前序遍歷序列為{1,2,4,7,3,5,6,8}和中序遍歷為,則重建出二叉樹並輸出它的頭結點。

思路

**

public

class

binarytreenode

public

binarytreenode

(int data)

}public

class

rebuildbinarytree

return

rebuildcore

(pre,

0,pre.length-

1,in,

0,in.length-1)

;}public treenode rebuildcore

(int

pre,

int startpre,

int endpre,

int[

] in,

int startin,

int endin)

}//找到根節點在中序序列中的位置

int rootin = startin;

while

(rootin <= endin && in[rootin]

!= rootdata)

//該根節點左子樹的節點個數

int lefttreelength = rootin - startin;

//得到前序序列中左子樹的範圍末尾

int preend = startpre + lefttreelength;

//如果左子樹有節點,建立左子樹

if(lefttreelength >

0//右子樹節點個數》0,則建立右子樹

if(endpre - startpre - lefttreelength >0)

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...