【LeetCode】(94)Binary Tree Inorder Traversal(Easy)
2015-08-20 16:44
471 查看
题目
Binary Tree Inorder Traversal
Total Accepted: 78083 TotalSubmissions: 214829My Submissions
Question
Solution
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3
return
[1,3,2].
解析
没啥说的,中序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void inorderTraversalSub_94(TreeNode* root,vector<int>& ret) { if (root==NULL) { return; } inorderTraversalSub_94(root->left,ret); ret.push_back(root->val); inorderTraversalSub_94(root->right,ret); } vector<int> inorderTraversal(TreeNode* root) { vector<int> ret; inorderTraversalSub_94(root,ret); return ret; } };感觉很简单的代码,但是看了一下大神的,貌似很复杂的样子,难道大神的代码效率更高?但是我用的时间也是接近于0的。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; const TreeNode *p = root; stack<const TreeNode *> s; while (!s.empty() || p != nullptr) { if (p != nullptr) { s.push(p); p = p->left; } else { p = s.top(); s.pop(); result.push_back(p->val); p = p->right; } } return result; } };
相关文章推荐
- B树、B-树、B+树、B*树
- mac系统下命令编译android ndk项目
- 17. 合并两个排序的链表
- 虚拟化--020 vsphere 命令收集
- POJ 2761(求区间第k小值)
- 获取hw_device_t
- OC可变字符串NSMutableString详解
- 台湾国立大学机器学习基石.听课笔记(第十二讲):Nonlinear Transformation
- Android笔记:通知
- 100+个程序员开发必备参考手册(在线及下载) [复制链接]
- 虚拟化--019 vcenter删除日志文件
- UIImage的发掘
- 使用ipmi进行服务器管理
- map(最基本的理解)
- 最近公共祖先(LCA):tarjan与倍增
- httpclient 无信任证书使用https
- python __init__.py文件的作用
- 虚拟化--018 vc连接不上sql服务没开启
- 16. 反转链表
- ajax的原创