Given a binary tree, return the preorder traversal of its nodes' values.

Example:

Input: [,null,,]

    \

    /

Output: [,,]

Follow up: Recursive solution is trivial, could you do it iteratively?

方法一:使用迭代(C++)

 vector<int> preorderTraversal(TreeNode* root) {
vector<int> res={};
if(!root)
return res;
stack<TreeNode*> s;
TreeNode* cur=root;
while(!s.empty()||cur){
while(cur){
res.push_back(cur->val);
s.push(cur);
cur=cur->left;
}
cur=s.top();
s.pop();
cur=cur->right;
}
return res;
}

方法二:使用递归,更简单,但是效率较低

 void preOrder(TreeNode* root,vector<int>& m){
if(!root)
return;
m.push_back(root->val);
preOrder(root->left,m);
preOrder(root->right,m);
} vector<int> preorderTraversal(TreeNode* root) {
vector<int> res={};
if(!root)
return res;
preOrder(root,res);
return res;
}

最新文章

  1. Windows Live Writer 在线安装失败的解决方法。
  2. C/C++内存分配
  3. 【Python】Celery异步处理
  4. Oracle 创建/删除 表空间、用户、授权
  5. session的使用方法
  6. Java JDBC下执行SQL的不同方式、参数化预编译防御
  7. 在centos 6.5 在virtual box 上 安装增强版工具
  8. 加密解密(10)常见HASH算法:MD5(128bit),SHA1(160bit)
  9. jQuery树叶掉落特效代码
  10. POSIX字符类型
  11. 使用Runtime.getRuntime().exec()方法的几个陷阱 (转)
  12. bzoj 1799: [Ahoi2009]self 类似的分布 解读
  13. android studio 中的 gradle version
  14. java 局部变量几点笔记
  15. [BJOI2017]开车
  16. TCP/IP 笔记 - 防火墙和网络地址转换
  17. 从零开始学习html(八)CSS选择器——上
  18. 一个小工具 TcpTextListener
  19. unity--------prefab嵌套prefab
  20. Python 使用CPickle和pickle模块进行序列化和反序列化

热门文章

  1. sql sever 2012重装数据库时,出现cannot find one or more components, Please reinstall the application.解决方法
  2. 《DSP using MATLAB》Problem 7.14
  3. JavaScript杂谈(第六天)
  4. Git学习之第一次使用PR
  5. 游戏编程模式 Game Programming Patterns (Robert Nystrom 著)
  6. rust
  7. python selenium-webdriver 下拉菜单处理 (九)
  8. shibie
  9. (转)初学Git及简单搭建git服务器和客户端
  10. Python中实用却不常见的小技巧