输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

    xiaoxiao2021-03-25  83

    /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { TreeNode *result = NULL; int len; if((len=pre.size())==0){ return result; } result = new TreeNode(pre[0]); int mid = 0; for(int i=0;i<len;i++){ if(pre[0]==vin[i]){ mid = i; break; //中序数找到之后无需继续遍历了 } } vector<int> lpre,rpre,lvin,rvin; for(int i=0;i<mid;i++){ lpre.push_back(pre[i+1]); lvin.push_back(vin[i]); } for(int i=mid+1;i<len;i++){ rpre.push_back(pre[i]); rvin.push_back(vin[i]); } //递归完成 result->left = reConstructBinaryTree(lpre,lvin); result->right = reConstructBinaryTree(rpre,rvin); return result; } };
    转载请注明原文地址: https://ju.6miu.com/read-20323.html

    最新回复(0)