剑指offer-重建二叉树

/**
 * 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) {
return buildtree(pre,vin,0,pre.size-1,0,vin.size-1)
    }
TreeNode *buildtree(vector<int>pre,vector<int>vin,int prei,int prej,int vini,int vinj){
        if(prei==prej)return NULL;
int pos=pre[prei];
int find=vini;
        while(find<vinj){
if(pos==vin[find])break;
            else find++;
        }
        TreeNode tree=new TreeNode{pos};
        tree.left=buildtree(pre,vin,prei+1,find-1,vini,find-2);
        tree.right=buildtree(pre,vin,find,prej,find,vinj);
         return tree;
    }
};
阅读更多
个人分类: 剑指offer
上一篇剑指offer-从头到尾打印链表
下一篇剑指offer-用两个栈实现队列
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭