首页 > Binary Tree Inorder Traversal

Binary Tree Inorder Traversal

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

For example:

Given binary tree {1,#,2,3},

   12/3

 

return [1,3,2].

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

中序遍历非递归版本

法一:

class Solution {
private:vector<int> res;
public:vector<int> inorderTraversal(TreeNode *root) {res.clear();if(root==NULL) return res;stackbool>> s;s.push(make_pair(root,false));while (!s.empty()){root=s.top().first;while (root!=NULL&&!s.top().second){s.top().second=true;root=root->left;if(root!=NULL) s.push(make_pair(root,false));}root=s.top().first->right;res.push_back(s.top().first->val);s.pop();if(root!=NULL)s.push(make_pair(root,false));}return res;}
};

 

法二:

class Solution {
private:vector<int> res;
public:vector<int> inorderTraversal(TreeNode *root) {res.clear();if(root==NULL) return res;stackbool>> s;TreeNode* t;int used;s.push(make_pair(root,false));while(!s.empty()){t=s.top().first;used = s.top().second;s.pop();if(!used){if(t->right!=NULL) s.push( make_pair(t->right,false));s.push(make_pair(t,true));if(t->left!=NULL) s.push( make_pair(t->left,false));}else res.push_back(t->val);}return res;}
};

 

转载于:https://www.cnblogs.com/fightformylife/p/4244454.html

更多相关:

  • 说明如下: (1)所有操作最好使用root操作,以尽可能避免权限问题 (2)crtmpserver和web服务器apache(Ngnix亦可)被装在同一台服务器上,客户端使用其他PC的桌面浏览器和android手机,下面是测试环境示意图: (3)测试环境位于局域网内,由一台路由器接入联通运营商提供的10M包年网络服务 (...

  • 1. free 2. top 3. vmstat 4. slabtop; 5. pmap 6. dmesg 7. /proc/meminfo 8. /proc/sys/vm 目录下的文件 9. sync 10./proc/zoneinfo  11./proc/pagetypeinfo 查看内存工具:1.free free - Dis...

  • 文章目录前言创建二叉树先序遍历中序遍历后序遍历获取叶子节点个数获取树的高度测试代码 前言 现有如下二叉树: 关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基本都能够拆分为若干个子节点的操作,且每个子节点的操作都和其头节点操作一致。 所以我们针对二叉树的操作都可以使用分治算+回溯/归并算法进行...

  • 今天需要部署一个ceph L 版本12.2.12的环境,无奈最近公司网络无法访问到ceph官网,只能使用之前下载好的ceph-deploy-1.5.39版本,安装上之后一口老血喷了出来,没有mgr的部署选项。 无奈之下只能自己制作一个1.5.38版本的ceph-deploy包,借用从ceph-deploy-1.5.39-0.src....

  • root 权限进入MySQL: mysql –uroot 查看当前MySQL用户: select user,host from mysql.user;     此处以User为root,Host为localhost的账户为例,将密码改为password的命令:   SET PASSWORD FOR 'root'@'localhost...

  • pair 的用法 std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。  C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象。  class pair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对...

  • #include #include #include #include #include #include #include

  • 题目:表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"及"-1E-16"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。 解题: 数值错误的形式有多种多样,但是正确的...

  • 加法伺候  //超过20位数值相加---------------------------------------- function bigNumAdd(a, b) {if (!(typeof a === "string" && typeof b === "string")) return console.log("传入参数必...

  • 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程...

  • 简单record 一下 #include // 'struct sockaddr_in' #include #include // 'struct ifreq' and 'struct if_nameindex' #include #inc...