劍指offer 7 重建二叉樹

2021-10-01 14:31:27 字數 925 閱讀 6809

因為各種各樣的原因,要開始準備春招,所以開始刷劍指offer(第二版)。

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

這個是個二叉樹很基礎的題啦,需要用遞迴來實現。主要講解在書的62頁,主要貼自己的**和自己的理解。

主要利用的規律如下圖:

//這裡我們遞迴開始之前傳入的是整個pre和in陣列,然後在之後的遞迴中再改變pre和in的大小

struct treenode *

test

(int

*pre_start,

int*pre_end,

int*in_start,

int*in_end)

//如果左子樹的長度大於0,就構建左子樹

if(left_len >0)

root->left =

test

(pre_start +

1, pre_start + left_len, in_start, in_start + left_len -1)

;//右子樹大於0就構建右子樹

if(in_end - in_start >= left_len +1)

root->right =

test

(pre_start + left_len +

1, pre_end, in_start + left_len +

1, in_end)

;//最後返回構建的根節點

return root;

}class solution

};

劍指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 重建二叉樹

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