07 重建二叉樹

2022-02-02 06:34:14 字數 1012 閱讀 3599

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

例如,給出

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

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

返回如下的二叉樹:

3/ \

9 20

/ \

15 7

限制:0 <= 節點個數 <= 5000

解:樹一般都用遞迴的方法,這道題解題的關鍵是找到根節點在前序和中序的位置及關係

/*

* * definition for a binary tree node.

* struct treenode

* }; */

class

solution

treenode *root=new treenode(preorder[0

]);

//前序陣列中去掉根節點,中序陣列中根節點的下標,在前序節點中此下標前的都是根節點的左子樹

vector left_pre(preorder.begin()+1,preorder.begin()+i_medpos+1

); vector

right_pre(preorder.begin()+i_medpos+1

,preorder.end());

vector

left_in(inorder.begin(),inorder.begin()+i_medpos);

//中序陣列中去掉根節點

vector right_in(inorder.begin()+i_medpos+1

,inorder.end());

root->left=buildtree(left_pre,left_in);

root->right=buildtree(right_pre,right_in);

return

root;

}};

07 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。示例 前序遍歷 preorder 3 9,20 15,7 中序遍歷 inorder 9 3,15 20,7 返回如下的二叉樹 3 920 157 definition for a ...

07 重建二叉樹

利用python陣列的index函式來定位根節點在inorder陣列中的位置 index inorder.index root.val preorder陣列不需要進行切片操作,遞迴終止條件主要靠 前兩行中的not inorder來終止。root.left self.buildtree preorde...

演算法07(重建二叉樹)

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 以下是用遞迴寫出的方法,使用了時間...