- 二叉树的中序遍历
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[2,1]
示例 5:
输入:root = [1,null,2]
输出:[1,2]
1.递归
class Solution94 {
public:
vector<int> inorderTraversal(TreeNode* root)
{
vector<int>res ;
if(root != NULL)
{
inorder(root,res);
}
return res;
}
void inorder(TreeNode* node,vector<int>&res)
{
if(node != NULL)
{
inorder(node->left,res);
res.push_back(node->val);
inorder(node->right,res);
}
}
};
2.使用栈
class Solution {
public:
//使用栈
vector<int> inorderTraversal(TreeNode* root)
{
stack<TreeNode * >skt;
vector<int>res;
while(root != nullptr || !skt.empty())
{
while(root !=nullptr)
{
skt.push(root);
root = root->left;
}
root = skt.top();
res.push_back(root->val);
skt.pop();
root = root->right;
}
return res;
}
};