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

2021-10-25 15:26:40 字數 1368 閱讀 1393

* 使用陣列 preorder 在索引區間 [preleft, preright] 中的所有元素

* 和陣列 inorder 在索引區間 [inleft, inright] 中的所有元素構造二叉樹

** @param preorder 二叉樹前序遍歷結果

* @param preleft 二叉樹前序遍歷結果的左邊界

* @param preright 二叉樹前序遍歷結果的右邊界

* @param inorder 二叉樹後序遍歷結果

* @param inleft 二叉樹後序遍歷結果的左邊界

* @param inright 二叉樹後序遍歷結果的右邊界

* @return 二叉樹的根結點

*/private treenode buildtree(int preorder, int preleft, int preright,

int inorder, int inleft, int inright)

// 先序遍歷的起點元素很重要

int pivot = preorder[preleft];

treenode root = new treenode(pivot);

int pivotindex = inleft;

// 嚴格上說還要做陣列下標是否越界的判斷 pivotindex < inright

while (inorder[pivotindex] != pivot)

root.left = buildtree(preorder, preleft + 1, pivotindex - inleft + preleft,

inorder, inleft, pivotindex - 1);

root.right = buildtree(preorder, pivotindex - inleft + preleft + 1, preright,

inorder, pivotindex + 1, inright);

return root;}}

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