二叉树的创建

思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树。

TreeNode* createTree(int *arr, int length) {
if(length<) return NULL;
TreeNode* root = new TreeNode(arr[]);
deque<pair<TreeNode*,int> > route;
route.push_back(make_pair(root,));
while(!route.empty()) {
TreeNode* temp = route.front().first;
int ct = route.front().second;
route.pop_front();
if(*ct+<length) {
temp->left = new TreeNode(arr[*ct+]);//创建当前节点的左叶子
route.push_back(make_pair(temp->left,*ct+));
}
if(*ct+<length) {
temp->right = new TreeNode(arr[*ct+]);//创建当前节点的右叶子
route.push_back(make_pair(temp->right,*ct+));
} }
return root;
}

二叉树的先序、中序和后序遍历

思路:借用之前看到的一篇文章,可以使用同一套代码完成这3种遍历,主要思想是有重合元素的局部有序能使整体有序。

void PostOrder(TreeNode* root) {
deque<pair<TreeNode*, bool> > route;
route.push_back(make_pair(root, false));
while(!route.empty()) {
TreeNode* root = route.back().first;
bool visit = route.back().second;
route.pop_back();
if(root==NULL)
continue;
if(visit) {
cout << root->val << ' ';
} else {//改变下面三者的顺序就可以实现三种排序
route.push_back(make_pair(root, true));
route.push_back(make_pair(root->right, false));
route.push_back(make_pair(root->left, false)); }
}
}

最新文章

  1. Git初使用
  2. 在block中使用self
  3. 返回绝对值--Math.Abs 方法
  4. C 语言中 free() 函数简单分析
  5. HTML和JSON的数据交互-HTML模板
  6. 获取context path或者basePath
  7. 调用[[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad判断设备
  8. 【Java并发编程】并发编程大合集-值得收藏
  9. MYBATIS 简单整理与回顾
  10. pouchdb-all-dbs插件
  11. MacOS和iOS开发中异步调用与多线程的区别
  12. [Swift]LeetCode412. Fizz Buzz
  13. Web漏洞扫描工具(批量脱壳、反序列化、CMS)
  14. [matlab] 22.matlab图论实例 最短路问题与最小生成树 (转载)
  15. 上传第三方jar包至maven私服,以geotools为例
  16. 注意兼容浮点运算误差 0.7 + 0.1 ==0.8 为false
  17. hdu 1.2.5
  18. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验八:PS/2模块② — 键盘与组合键
  19. Oracle EBS - Setup: 配置文件Profile
  20. JPA映射持久化对象(Entity)

热门文章

  1. Python word_cloud 部分文档翻译 标签云系列(二)
  2. hdu 6311 欧拉回路
  3. python基础之模块之序列化
  4. 很受欢迎的vue前端UI框架
  5. day21 数据库(DataBase)
  6. Web Uploader
  7. 学号20155308 2016-2017-2 《Java程序设计》第5周学习总结
  8. 配置ODBC DSN数据源,导出数据库数据到Excel过程记录
  9. package.json安装依赖的箭头?
  10. vue-cli环境搭建初探!