当前位置: 代码迷 >> 综合 >> leetcode练习题 construct-binary-tree-from-inorder-and-postorder-traversal
  详细解决方案

leetcode练习题 construct-binary-tree-from-inorder-and-postorder-traversal

热度:29   发布时间:2023-12-15 10:04:17.0

解题思路

已知二叉树的中序遍历和后序遍历进行建树,可以用后序遍历的最后一个元素将中序遍历划分为左右子树的中序遍历,再对剩余的进行递归建树。

代码

class Solution {
public:TreeNode *buildTree(vector<int> &inorder,vector<int> &postorder,int instart,int inend,int poststart,int postend){if(instart > inend || poststart > postend)return NULL;TreeNode *res = new TreeNode(postorder[postend]);int flag = 0;for(int i = instart;i <= inend;i++){if(inorder[i] == postorder[postend]){flag = i;break;}}res->left = buildTree(inorder,postorder,instart,flag - 1,poststart,poststart + flag - instart - 1);res->right = buildTree(inorder,postorder,flag + 1,inend,poststart + flag - instart,postend - 1);return res;}TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {return buildTree(inorder,postorder,0,inorder.size() - 1,0,postorder.size() - 1);}
};
  相关解决方案