#LeetCode# #C++# Binary Tree Inorder Traversal
来源:互联网 发布:淘宝纸箱加工机器 编辑:程序博客网 时间:2024/05/18 00:33
给一个二叉树,返回中序遍历的节点的值。
Note:递归很简单,那么迭代呢?
方法一:递归
1.创建一个vector存结果
2.递归结束点:root == NULL
3.先左,再中,后右
Status:
Accepted
Runtime: 0 ms
class Solution {public: void fillres(TreeNode* root, vector<int> &result){ if(root == NULL) return; fillres(root->left, result); result.push_back(root->val); fillres(root->right, result); } vector<int> inorderTraversal(TreeNode* root) { vector<int> result; fillres(root, result); return result; }};
方法二:迭代
Status:
Accepted
Runtime: 0 ms
中序:左 -> 中(根) -> 右
栈:压中 -> 压左 -> 出左 -> 出中 -> 压右 -> 出右
压中压左:压入本节点的中,也是压入父节点的左 -> 再压入本节点的左,也是压入左子节点的中
出左出中:弹出本节点的左,也是弹出左子节点的中 -> 再弹出本节点的中,也是弹出父节点的左
压右:压入本节点的右,也是压入右子节点的中
出右:弹出本节点的右,也是弹出右子节点的中
1.创建一个vector保存结果
2.创建一个stack模拟递归压栈
3.while循环4、5、6、7
4.先把根节点root压入栈,再把所有root->left压入栈(想要先出左再出中,就要先压中再压左)
5.迭代结束点:stack.empty()
6.stack.top取一个点ptop,ptop既是父节点的left(先出左),也是它自己的root(先出左,现在出中),ptop存入vector
7.再访问ptop的right(先出左再出中,现在出右),continue
class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; // if(root == NULL) return result; stack<TreeNode*> stk; TreeNode* pNode = root; while(1){ while(pNode){ stk.push(pNode); pNode = pNode->left; } if(stk.empty()) break; pNode = stk.top(); result.push_back(pNode->val); stk.pop(); pNode = pNode->right; } return result; }};
0 0
- [C++]LeetCode: 48 Binary Tree Inorder Traversal
- [leetcode-94]Binary Tree Inorder Traversal(c++)
- #LeetCode# #C++# Binary Tree Inorder Traversal
- 【LeetCode-94】Binary Tree Inorder Traversal(C++)
- LeetCode: Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- LeetCode : Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- 【leetcode】Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- [leetcode]Binary Tree Inorder Traversal
- LeetCode-Binary Tree Inorder Traversal
- Leetcode Binary Tree Inorder Traversal
- Java 8 Lambda实现原理分析
- 51单片机结合NRF24L01对舵机进行无线控制
- Android之平时遇见的异常和错误总结(不断更新)
- bzoj1724【Usaco2006 Nov】Fence Repair 切割木板
- Eclipse中设置代码缩进为空格缩进
- #LeetCode# #C++# Binary Tree Inorder Traversal
- display:inline-block兼容ie6/7的写法
- [leetcode] 22 Generate Parentheses(递归)
- activity view 截图
- 设计模式试题-答案
- スマホの文字入力は何派?ケータイ打ち・フリック入力・QWERTY入力を選ぶ理由
- 51单片机利用IIC总线对LM75A温度进行读取
- UIAlertView
- 与正则相关的一切 (示例)JS Date 转换日期格式