牛客网刷题—剑指OFFER 004 重建二叉树

一、题目描述

输入某二叉树的前序遍历和中序遍历,重建该二叉树。

二、思路

二叉树的前序遍历:第一个数字即为根节点的值

二叉树的中序遍历:根节点的值在中间,其左边为左子树节点的值,右边为右子树节点的值。

这样就找到了左、右子树前序遍历和中序遍历,然后用同样的方法构建左、右子树。利用递归的方式完成。

三、代码实现

Struct TreeNode{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x):val(x),left(NULL),right(NULL){}
};

Class Solution{
public:
   TreeNode* reConstructBinary(vector pre ,vector vin){
   if (pre.empty()||vin.empty()) return NULL;
   TreeNode *root=new TreeNode(pre[0]);   //依据先序遍历的第一个数字创建根节点
   int leftLength=0;
   int RightLength=0;
   for(int i=0;i pre_left,in_left,pre_right,in_right; //左、右子树的前序遍历和中序遍历。
   for(int j=0;jleft=reConstructBinary(pre_left,in_left);
   root->right=reConstructBinary(pre_right,in_right);
   return root;
   }
}

 

你可能感兴趣的:(牛客网刷题—剑指OFFER 004 重建二叉树)