郑州淘宝网站建设,电商网站建设技术外包,ui网页设计尺寸,装修图片大全题目描述
给定两个整数数组 preorder 和 inorder #xff0c;其中 preorder 是二叉树的先序遍历#xff0c; inorder 是同一棵树的中序遍历#xff0c;请构造二叉树并返回其根节点。 出处
思路
根据先序和中序可以划分左右子树#xff0c;递归构造子树即可。
代码
cla…题目描述
给定两个整数数组 preorder 和 inorder 其中 preorder 是二叉树的先序遍历 inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。 出处
思路
根据先序和中序可以划分左右子树递归构造子树即可。
代码
class Solution {
public:TreeNode* buildSubTree(vectorint preorder, vectorint inorder, int p_start, int i_start, int i_end) {if(p_startpreorder.size()-1||i_start0||i_starti_end) return nullptr;TreeNode* rootnew TreeNode(preorder[p_start]);if(i_starti_end)return root;int ii_start;while(inorder[i]!preorder[p_start])i;root-left buildSubTree(preorder, inorder, p_start1, i_start, i-1);root-right buildSubTree(preorder, inorder,p_start(i-i_start1), i1, i_end);return root;}TreeNode* buildTree(vectorint preorder, vectorint inorder) {return buildSubTree(preorder, inorder,0,0,inorder.size()-1);}
};