/**
* 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> res;
// Traversal(root, res);
// return res;
// }
// void Traversal(TreeNode* root, vector<int>& res){
// if (!root)
// return;
// Traversal(root->left, res);
// res.push_back(root->val);
// Traversal(root->right, res);
// }
// };
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> s;
while(root || !s.empty()){
// 先将左儿子全部入栈
while(root){
// 在这里访问则为先序
// res.push_back(root->val);
s.push(root);
root = root->left;
}
// 然后访问栈顶节点
if (!s.empty()){
root = s.top();
s.pop();
// 在这里访问为中序
res.push_back(root->val);
// 访问右儿子
root = root->right;
}
}
return res;
}
};
static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
LetCode 94. 二叉树的中序遍历
最新推荐文章于 2024-09-11 01:16:34 发布