LeetCode刷题(117)~二叉树的中序遍历【递归|迭代】
程序员文章站
2022-06-17 19:53:30
...
题目描述
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
解答 By 海轰
提交代码(递归)
vector<int> ans;
vector<int> inorderTraversal(TreeNode* root) {
if(root!=NULL)
{
if(root->left!=NULL)
inorderTraversal(root->left);
ans.push_back(root->val);
if(root->right!=NULL)
inorderTraversal(root->right);
}
return ans;
}
运行结果
提交代码(递归 辅助函数版)
void help(TreeNode* root,vector<int> &ans)
{
if(root!=NULL)
{
if(root->left!=NULL)
help(root->left,ans);
ans.push_back(root->val);
if(root->right!=NULL)
help(root->right,ans);
}
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> ans;
help(root,ans);
return ans;
}
运行结果
提交代码(迭代)
vector<int> inorderTraversal(TreeNode* root) {
vector<int> ans;
stack<TreeNode*> s;
TreeNode* temp=root;
while(temp!=NULL||!s.empty())
{
while(temp!=NULL)
{
s.push(temp);
temp=temp->left;
}
temp=s.top();
ans.push_back(temp->val);
s.pop();
temp=temp->right;
}
return ans;
}
运行结果
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal
下一篇: 5款最强且免费的Python IDE小结
推荐阅读
-
【LeetCode】二叉树各种遍历大汇总(秒杀前序、中序、后序、层序)递归 & 迭代
-
【LeetCode 94】使用迭代返回二叉树的中序遍历结果
-
lintcode:二叉树的中序遍历 递归,迭代,Morris
-
LeetCode刷题(117)~二叉树的中序遍历【递归|迭代】
-
LeetCode 94. 二叉树的中序遍历(递归)(迭代)
-
LeetCode 二叉树的中序遍历(递归和非递归算法)
-
【基础题】--实现二叉树的前序 / 中序 / 后序非递归遍历
-
LeetCode 105. 从前序与中序遍历序列构造二叉树(各种遍历二叉树的性质,递归建树)
-
LeetCode 94.二叉树的中序遍历(迭代,C++)
-
leetcode: 94. 二叉树的中序遍历(C: 递归+迭代)