LeetCode 94. 二叉树的中序遍历 C++
程序员文章站
2022-05-20 13:52:26
...
LeetCode 94. 二叉树的中序遍历 C++
方法:
1.迭代
2.递归
详细思路见注释
class Solution {
public:
// 思路:
// 1. 将整棵树的最左边一条链压入栈中
// 2. 每次取出栈顶元素,如果它有右子树,则将右子树压入栈中
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;// 存储结果
stack<TreeNode*> stk;
auto p = root;
// 当p不为空或者stk中有元素,循环继续
while (p || stk.size()){
while (p){// 将最左边的链压入栈中
stk.push(p);
p = p->left;
}
p = stk.top();// 将p赋值为栈顶的元素,即最左边链的最下面的元素
stk.pop();// 然后将栈顶元素弹出
res.push_back(p->val);// 存放一个结果
p = p->right;// 再将p的右子树的最左边链压入栈中
}
return res;
}
/*
vector<int> inorderTraversal(TreeNode* root) {
vector<int> ans;
inorder(ans, root);
return ans;
}
void inorder(vector<int>& ans, TreeNode* root)
{
if (root == NULL)
{
return;
}
inorder(ans, root->left);
ans.push_back(root->val);
inorder(ans, root->right);
}
*/
};
上一篇: 领扣 65. 有效数字
推荐阅读
-
Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】
-
Python利用前序和中序遍历结果重建二叉树的方法
-
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
-
[PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
-
【算法】二叉树的前序、中序、后序、层序遍历和还原。
-
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
-
C++实现LeetCode(105.由先序和中序遍历建立二叉树)
-
C++实现LeetCode(889.由先序和后序遍历建立二叉树)
-
C++实现LeetCode(106.由中序和后序遍历建立二叉树)
-
LeetCode 426. 将二叉搜索树转化为排序的双向链表(BST中序循环遍历)