106. 从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。
示例 1:
输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] 输出:[3,9,20,null,null,15,7]
示例 2:
输入:inorder = [-1], postorder = [-1] 输出:[-1]
class Solution { public: unordered_map<int, int> map; int n = 0; TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { n = inorder.size(); for (int i = 0; i < n; i++) { map[inorder[i]] = i; } return Pan(inorder,postorder,n-1,0,n-1); } TreeNode* Pan(vector<int>& inorder, vector<int>& postorder,int post,int start,int end) { if (start > end||post<0) return NULL; int flag = map[postorder[post]]; TreeNode *root = new TreeNode(inorder[flag]); root->right= Pan(inorder, postorder, post-1, flag+1, end); root->left= Pan(inorder, postorder, post - 1+flag-end, start, flag-1); return root; } };
浙公网安备 33010602011771号