frp做网站,wordpress字典插件,做网站用的图片怎样压缩,wordpress切换至就编辑器中序遍历序列存放节点的顺序是左中右#xff0c;后序遍历存放节点的顺序是左右中后序遍历序列的最后一个节点即为二叉树的根节点由于每个值在二叉树中都是唯一的#xff0c;那么根据根节点的值#xff0c;就可以将中序遍历序列一分为二#xff0c;前部分存储的是根节点左子…中序遍历序列存放节点的顺序是左中右后序遍历存放节点的顺序是左右中后序遍历序列的最后一个节点即为二叉树的根节点由于每个值在二叉树中都是唯一的那么根据根节点的值就可以将中序遍历序列一分为二前部分存储的是根节点左子树的节点后半部分存储的是根节点右子树的节点不论中序还是后序遍历左右子树的节点是相同的那么就可以将两个序列划分为四个序列中序遍历序列的左右部分后序遍历序列的左右部分那么此时以根节点的值构造根节点根节点的左子节点就可以以中序遍历序列的左部分和后序遍历序列的左部分进行构造右子节点同理那么递归下去就能够构造完成整棵二叉树注 在实现时对 inorderleft 等四个数组未进行初始化规定数组的大小此时是无法 inorderleft[i] inorder[i]; 这样去赋值的。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* subVec(vectorint inorder, vectorint postorder){if(inorder.empty() postorder.empty()){return nullptr;}TreeNode* root new TreeNode(postorder[postorder.size() - 1]);if(postorder.size() 1){return root;}int flag 0;for(flag; flag inorder.size(); flag){if(inorder[flag] root-val){break;}}vectorint inorderleft;vectorint inorderright;vectorint postorderleft;vectorint postorderright;for(int i 0; i flag; i){inorderleft.push_back(inorder[i]);postorderleft.push_back(postorder[i]);}for(int j flag; j 1 inorder.size(); j){inorderright.push_back(inorder[j 1]);postorderright.push_back(postorder[j]);}root-left subVec(inorderleft, postorderleft);root-right subVec(inorderright, postorderright);return root;}TreeNode* buildTree(vectorint inorder, vectorint postorder) {TreeNode* root subVec(inorder, postorder);return root;}
};