博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树非递归遍历方法小结
阅读量:4677 次
发布时间:2019-06-09

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

二叉树的遍历是面试中经常考察的,其实前中后三种顺序的遍历都大同小异,自己模拟两个栈用笔画画我相信是不难写出代码的。现罗列如下,均是自己所写已通过leetcode。

1 class Solution { 2 public: 3     vector
preorderTraversal(TreeNode *root) { 4 vector
out; 5 stack
s; 6 s.push(root); 7 while(!s.empty() && root){ 8 TreeNode *node = s.top(); 9 out.push_back(node->val);10 s.pop();11 if(node->right) s.push(node->right);12 if(node->left) s.push(node->left);13 }14 return out;15 16 17 }18 vector
inorderTraversal(TreeNode *root) {19 stack
s;20 vector
out;21 TreeNode *node = root;22 bool done = false;23 while(!done){24 if(node){25 s.push(node);26 node = node->left;27 }else {28 if(s.empty()) done = true;29 else{30 node = s.top();31 s.pop();32 out.push_back(node->val);33 node = node->right;34 }35 }36 }37 return out;38 }39 vector
postorderTraversal(TreeNode *root) {40 vector
out;41 stack
s;42 TreeNode* node = root;43 s.push(node);44 while(!s.empty()&&node){45 node = s.top();46 out.push_back(node->val);47 s.pop();48 if(node->left) s.push(node->left);49 if(node->right)s.push(node->right);50 }51 reverse(out.begin(),out.end());52 return out;53 }54 };

转载于:https://www.cnblogs.com/134feilei/p/3850203.html

你可能感兴趣的文章
centos 7 修改ssh登录端口
查看>>
查看网络流量情况、带宽大小
查看>>
生日相同 2.0
查看>>
代码规范审查 - 审查分析工具选型
查看>>
git 命令速查及使用
查看>>
在树莓派3B上安装node.js
查看>>
20159302《网络攻击与防范》第十一周学习总结
查看>>
04-----对象的单体模式
查看>>
C++静态计算的例子
查看>>
再谈记忆化搜索 HDU-1078
查看>>
在Node中使用ES6语法
查看>>
2015年秋面试心得汇总
查看>>
海外开发者推荐:10个顶级2D游戏资源站
查看>>
redis 在 php 中的应用(Hash篇)
查看>>
2018新年 flag 了解一下(每月初更新...)
查看>>
软件工程概论个人作业02
查看>>
《SSAO》
查看>>
基于.NET平台常用的框架整理(转)
查看>>
the simulation codes of network resource pre-allocation
查看>>
java远程调试
查看>>