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

2022-02-18 08:43:48 字數 910 閱讀 3363

思路:前序是根左右,前序序列第乙個元素一定是根。中序是左,根,右。根節點左邊一定是左子樹,右邊一定是右子樹。

樹沒有重複元素,所以,先找出根節點,初始化乙個treenode   root,再根據數值相同,找中序遍歷裡面的根節點,之後用arrays.copyofrange(preorder,1,num+1),求出先序遍歷,中序遍歷下的左右子樹的序列,遞迴呼叫函式,返回左右子樹根節點,最後root連線一下左右子樹,返回root就行。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

}int preleft = arrays.copyofrange(preorder,1,num+1);//取陣列裡[a,b)區間的元素,這裡是取了num個

int preright = arrays.copyofrange(preorder,num+1,preorder.length);//取出剩下的元素組成的陣列,也就是右子樹的元素的陣列

int inleft=arrays.copyofrange(inorder,0,num);//取出中序遍歷裡面,左子樹的元素組成的陣列

int inright=arrays.copyofrange(inorder,num+1,inorder.length);

root.left=buildtree(preleft,inleft);

root.right=buildtree(preright,inright);

return root;

}else}}

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