105 從前序與中序遍歷序列構造二叉樹

2021-10-09 22:49:07 字數 1197 閱讀 8746

105. 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。

注意:你可以假設樹中沒有重複的元素。

例如,給出

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

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

返回如下的二叉樹:

3/ \

9  20

/  \

15   7

思路分析:遞迴做法,前序遍歷不確定其左右子樹,可以根據中序遍歷確定左右子樹。

int pre_index=0;

unordered_mapdict;

treenode* buildtree(vector& preorder, vector& inorder)

思路分析:使用stack儲存節點資訊。

int pre=0;

int in=0;

treenode* buildtree(vector& preorder, vector& inorder)

cur->right=new treenode(preorder[pre]);

cur=cur->right;

stk.push(cur);

pre++;

}else

}return root;

}

思路分析:對於方法1的改進,思路與迭代類似,核心思想是根據中序遍歷找到當前樹的左右子樹的右邊界。但其空間複雜度為o(1)。 

int pre=0;

int in=0;

treenode* buildtree(vector& preorder, vector& inorder)

treenode *buildtreehelper(vector& preorder, vector& inorder,int stop)

if(inorder[in]==stop)

treenode *cur=new treenode(preorder[pre++]);

cur->left=buildtreehelper(preorder,inorder,cur->val);

cur->right=buildtreehelper(preorder,inorder,stop);

return cur;

}

Leetcode 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 definition for a binary tree node...

105 從前序與中序遍歷序列構造二叉樹

如題,根據前序與中序遍歷序列構造二叉樹 整體思路 前序遍歷的第乙個元素,必然是二叉樹的根節點 在中序遍歷中找到前序遍歷第乙個元素的位置 該位置左邊的所有點都是二叉樹的左子樹元素,該位置右邊的所有點都是二叉樹的右子樹元素 思路一 遞迴 字典 由整體思路可以構建子函式用於遞迴,不斷求子樹的左右子樹,直到...

105 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 def buildtree2 preorder,inorder i...