leetcode刷题,总结,记录,备注 94
2015-06-03 22:20
399 查看
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
return
Note: Recursive solution is trivial, could you do it iteratively?
leetcode刷题94,二叉树中序遍历问题,三种遍历使用递归的话都很方便,使用迭代的方式稍微麻烦点。
For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3
return
[1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
leetcode刷题94,二叉树中序遍历问题,三种遍历使用递归的话都很方便,使用迭代的方式稍微麻烦点。
/** * 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> TreeNodeVal; stack<TreeNode *> sTreeNode; TreeNode * temp; if (root == NULL) return TreeNodeVal; temp = root; while (temp || !sTreeNode.empty()) { while (temp) { sTreeNode.push(temp); temp = temp->left; } if (!sTreeNode.empty()) { temp = sTreeNode.top(); sTreeNode.pop(); TreeNodeVal.push_back(temp->val); temp = temp->right; } } return TreeNodeVal; } };一律先将左子树一溜入栈,在弹栈的时候,将当前节点值加入容器中,并对自己的右节点进行操作,从而达到中序的目的,,具体让我仔细讲我也讲不清楚,关键还是自己画个树实地做几步操作可以自己更好的理解。我也是看了别人的解法,才理解这个题目的。
相关文章推荐
- 国内著名IT公司官网log荟萃
- SDCC Linux编译
- 欢迎使用CSDN-markdown编辑器
- 5.2-4
- 杂七杂八 - CSS选择器
- 我的ORM之十三 -- 性能参数
- 团队项目后续阶段第三天
- Android Studio 'AIDL is missing' 且 不识别R文件
- poj 3250 Bad Hair Day (单调栈)
- Hadoop之——分布式集群安装过程简化版
- JAVA基础知识之编译、运行、打包
- ZigZag Conversion
- jsp ,servlet中路径
- SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
- SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
- android intent打开各种文件的方法
- openrisc u-boot移植
- SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
- Java DateUtils 的实用
- 分手后极品留言