right = makeNode(preorder, preBegin + leftSize + 1, preEnd, inorder, index + 1, inEnd); return root; } public TreeNode buildTree(int[] preorder, int[] inorder) { if (preorder.length == 0) return null; TreeNode root = makeNode(preorder, 0, preorder.length ,inorder, 0, ...
或leetcode 105: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 参与人数:5246 时间限制:1秒 空间限制:32768K 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{...
publicTreeNodebuildTree(int[] preorder,int[] inorder){if(preorder.length ==0)returnnull;introotIndex=0;inttempRootVal=preorder[rootIndex];inttempIndex=0;while(inorder[tempIndex] != tempRootVal) { tempIndex++; }TreeNoderoot=newTreeNode(tempRootVal);int[] newPre = Arrays.copyOfRange(pr...
}for(inti=1+leftLength;i<presize;++i)//leftLength+1到序列尾部都是右子树{ newRightPreorder.push_back(preorder[i]); } vector<int> newLeftinorder;//生成新的左子树中序序列vector<int> newRightinorder;//生成新的右子树中序序列for(inti=0;i<leftLength;++i)//0到leftLength左子树{ newLefti...
所以,我们可以从preorder中找到整棵树的根节点,即为preorder[0],由于preorder和inorder是对同一棵树的遍历,我们可以知道preorder[0]在inorder中一定也存在,不妨设preorder[0]==inorder[k]。 由于inorder是中序遍历,所以k左边的就是根节点左子树的中序遍历、k右边的就是根节点右子树的中序遍历。
利用递归思想,从 preorder 可以得到根节点,从 inorder 中得到左子树和右子树。只剩一个节点的时候即为根节点。不断的递归直到所有的树都生成完成。 参考代码 packageleetcode// TreeNode definetypeTreeNode=structures.TreeNode/** * Definition for a binary tree node. ...
同Construct Binary Tree from Inorder and Postorder Traversal(Python版) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def buildTree(self, pre...
preorder 的范围 [begin, end] 并不是 inorder 的范围,如果直接拿begin, end 来作为inorder[] 数组的边界条件,就会出错。所以必须要分为两个范围。 [preorderBegin, preorderEnd] [inorderBegin, inorderEnd] 这两个范围。 第二个错误,错的更深,其实到最后都没有彻底意识到,一定要当心,做此类题时。
13 if(preorder.size()!=inorder.size()) return NULL; 14 return build(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1); 15 } 16 17 TreeNode *build(vector<int> &preorder, vector<int> &inorder,int s1,int e1,int s2,int e2){ ...
make a binary tree from preorder and inorder Preorder sequence: EACBDFHIG Inorder sequence: FEDCABGHI cbinarytree 2nd Mar 2022, 1:05 PM raunak j 1 RespuestaResponder 0 https://www.programiz.com/dsa/complete-binary-tree 2nd Mar 2022, 3:02 PM Mustafa AResponder ...