码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer04-重建二叉树

时间:2020-05-25 17:51:28      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:return   cto   根据   tor   tree   一个   重建   node   new   

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

思路:前序遍历,第一个节点为二叉树root;中序遍历,左中右,root左边为左子树元素,右边为右子树元素;

根据前序辨认出中间节点,再根据中序遍历和中间节点划分左子树和右子树;递归;

TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
        TreeNode*root=construct(pre,0,pre.size()-1,vin,0,vin.size()-1);
        return root;
    }
    TreeNode* construct(vector<int>pre,int pre_left,int pre_right,vector<int>vin,int vin_left,int vin_right)
    {
        TreeNode*head=new TreeNode(pre[pre_left]);
        for(int i=vin_left;i<=vin_right;i++)
        {
            if(vin[i]==pre[pre_left])
            {
                if((i-vin_left)!=0)
                head->left=construct(pre,pre_left+1,pre_left+i-vin_left,vin,vin_left,i-1);
                if((vin_right-i)!=0)
                head->right=construct(pre,pre_left+i-vin_left+1,pre_right,vin,i+1,vin_right);
                
            }
            
        }
        return head;
    }

 

剑指offer04-重建二叉树

标签:return   cto   根据   tor   tree   一个   重建   node   new   

原文地址:https://www.cnblogs.com/trouble-easy/p/12957923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!