劍指offer 面試題07 重建二叉樹

2021-10-03 02:24:16 字數 1694 閱讀 7812

6.24更新

class

solution

treenode*

rebuild

(int prel,

int prer,

int inl,

int inr)

int numleft = k - inl;

//左節點個數

treenode* root =

newtreenode

(in[k]);

//新建乙個節點作為其根節點

root-

>left =

rebuild

(prel +

1, prel + numleft, inl, k-1)

;//對其左子樹進行重建

root-

>right =

rebuild

(prel + numleft +

1, prer, k +

1, inr)

;//對其右子樹進行重建

return root;

//返回根節點}}

;

class

solution

treenode*

rebuild

(int postl,

int postr,

int inl,

int inr)

int numright = inr-k;

//右子節點的個數

treenode* root =

newtreenode

(in[k]);

root-

>left =

rebuild

(postl, postr-numright-

1, inl, k -1)

; root-

>right =

rebuild

(postr-numright,postr-

1,k +

1, inr)

;return root;}}

;

2.24

class

solution

treenode*

create

(vector<

int>

& preorder, vector<

int>

& inorder,

int prel,

int prer,

int inl,

int inr)

}//左子樹結點的個數,方便區間的填寫

int numsleft = k - inl;

//對於head的左子樹繼續構建

head-

>left =

create

(preorder, inorder, prel +

1, prel + numsleft, inl, inl + k -1)

;//對於head的右子樹繼續構建

head-

>right =

create

(preorder, inorder, prel +numsleft+

1, prer, k +

1, inr)

;//返回根結點位址

return head;}}

;

劍指offer 面試題07 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 include include using namespace std struct t...

《劍指offer》 面試題07 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 限制 0 節點個數 5000 本題...

劍指Offer 面試題07重建二叉樹

劍指offer面試題彙總 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。輸入輸出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回 3 9 20 15 7解決方案 根據...