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

Example:

Input: [,null,,]

    \

    /

Output: [,,]

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

题目中要求使用迭代用法,利用栈的“先进后出”特性来实现中序遍历。

解法一:(迭代)将根节点压入栈,当其左子树存在时,一直将其左子树压入栈,直至左子树为空,将栈顶元素弹出,将其val值放入vector中,再将其右子树循环上述步骤,直到栈为空。

(C++)

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

方法二:使用递归(C++)

 void inorder(vector<int> &m,TreeNode* root){
if(root==NULL)
return;
inorder(m,root->left);
m.push_back(root->val);
inorder(m,root->right);
} vector<int> inorderTraversal(TreeNode* root) {
vector<int> m={};
if(root==NULL)
return m;
inorder(m,root);
return m;
}

最新文章

  1. IOS网络第七天WebView-01WebView和网页的交互1
  2. Electron笔记
  3. 【BZOJ 2005】【NOI 2010】能量采集 数论+容斥原理
  4. poj 3270 Cow Sorting
  5. Java免费开源数据库、Java嵌入式数据库、Java内存数据库
  6. C#面向对象基础:virtual方法,abstract方法,区别
  7. Sql Server 循环添加日期--(累加到一个字段中)
  8. SAP屏幕框架的创建
  9. NPOI 创建Excel,数据读取与写入
  10. git安装后配置--config
  11. js实现二级联动下拉列表菜单
  12. mp4文件格式解析
  13. Unite&#39;17 Shanghai再一次问候
  14. Robot framework(RF) 用户关键字
  15. Swift LeetCode 目录 | Catalog
  16. 【java】java三种技术架构
  17. MySQL技巧(三)运算符与函数
  18. git 命令使用集锦
  19. CSS实现输入框宽度随内容自适应效果
  20. Chrome插件:gitlab activity dashboard background-color

热门文章

  1. synchronized各种使用场景
  2. open-falcon监控nginx
  3. idea打开dashboard
  4. Exp2 后门原理与实践 毛瀚逸 20164318
  5. sql注入-推断是否存在SQL注入-and大法和or大法
  6. JSON数据、PHP数组 转换 Excel表格
  7. spring事务详解(五)总结提高
  8. MQTT研究之EMQ:【JAVA代码构建X509证书】
  9. 通用路由封装协议——GRE
  10. 【SQL实践】其他常用SQL汇总