首页 > 其他 > 详细

leetcode.105从前序与中序遍历序列构造二叉树

时间:2020-05-22 13:47:46      阅读:58      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

前序的第一个必然是这棵树的根,再根据这个根再中序中的位置得出左子树有多少节点,再获得左子树的前序和中序递归完成,右子树亦是如此。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        if(preorder.size()==0){
            return NULL;
        }
        if(preorder.size()==1){
            TreeNode* p=(TreeNode*)new TreeNode;
            p->val=preorder[0];
            p->left=NULL;
            p->right=NULL;
            return p;
        }
        int i;
        vector<int> a,b,c,d;
        TreeNode* p=(TreeNode*)new TreeNode;
        p->val=preorder[0];
        for(i=0;i<inorder.size();i++){
            
            if(inorder[i]==preorder[0]){
                break;
            }
            b.push_back(inorder[i]);
            a.push_back(preorder[i+1]);
        }
        p->left=buildTree(a,b);
        for(i+=1;i<preorder.size();i++){
            c.push_back(preorder[i]);
            d.push_back(inorder[i]);
        }
        p->right=buildTree(c,d);
        return p;
    }
};

  

 

leetcode.105从前序与中序遍历序列构造二叉树

原文:https://www.cnblogs.com/hyffff/p/12936548.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!