博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重建二叉树
阅读量:6324 次
发布时间:2019-06-22

本文共 1519 字,大约阅读时间需要 5 分钟。

//输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 //例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。  1 作者:技术不宅 2 链接:https://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6 3 来源:牛客网 4  5 #include 
6 #include 
7 using namespace std; 8 9 10 struct TreeNode {11  int val;12  TreeNode *left;13  TreeNode *right;14  TreeNode(int x) : val(x), left(NULL), right(NULL) {}15 };16 17 struct TreeNode* reConstructBinaryTree(vector
 pre, vector
 in)18 {19  if (pre.size() == NULL)20   return NULL;21  TreeNode* root = new TreeNode(pre[0]);22  int i;23  for (i = 0; i < in.size() && in[i] != pre[0]; i++);24  vector
 pre_left, in_left,pre_right,in_right;25  int pre_i = 1;26  for (int j = 0; j < in.size(); j++)27  {28   if (j < i)29   {30    in_left.push_back(in[j]);31    pre_left.push_back(pre[pre_i]);32    pre_i++;33   }34   else if (j>i)35   {36    in_right.push_back(in[j]);37    pre_right.push_back(pre[pre_i]);38    pre_i++;39   }40  }41  root->left = reConstructBinaryTree(pre_left, in_left);42  root->right = reConstructBinaryTree(pre_right, in_right);43  return root;44 }45 46 int main()47 {48  vector
 pre = { 1, 2, 4, 7, 3, 5, 6, 8 };49  vector
 in = { 4, 7, 2, 1, 5, 3, 8, 6 };50  TreeNode* root= reConstructBinaryTree(pre, in);51  int a = 0;52 }

 

转载于:https://www.cnblogs.com/dangeal/p/7834436.html

你可能感兴趣的文章
如何在Linux上搭建一个基于Web的轻型监控系统
查看>>
linux基础命令使用
查看>>
zabbix简单检测
查看>>
other模块的网络请求业务封装工具类
查看>>
Windows进程崩溃问题定位方法
查看>>
程序员如何让自己 Be Cloud Native - 配置篇
查看>>
SQL Server各个版本之间的差异
查看>>
如何拆笔记本键盘(组图)
查看>>
lua install
查看>>
海量数据处理 算法总结
查看>>
DNS服务器之主从服务搭建
查看>>
vim编辑器常用操作整理
查看>>
mysql性能参数查询
查看>>
VirtualBox运行报错Unable to load R3 module
查看>>
EBS Form个性化的工作原理
查看>>
SpringSecurity3整合CAS实现单点登录
查看>>
更新日期 2015年8月5日 - Citrix桌面虚拟化平台交付推荐版本及相关hotfix
查看>>
人工智能教程014:创建卷积神经网络进阶(5)
查看>>
oracle 分析函数
查看>>
idea 项目多开变通的解决方案
查看>>