/*方法一:递归中序遍历。*/
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
inorder(root, res);
return res;
}
void inorder(TreeNode* root, vector<int> &res){
if(root == nullptr) return;
if(root->left != nullptr) inorder(root->left, res);
res.push_back(root->val);
if(root->right != nullptr) inorder(root->right, res);
}
};
/*方法二:利用栈,迭代法中序遍历*/
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
if(root == nullptr) return res;
stack<TreeNode*> s;
TreeNode *p = root;
while(!s.empty() || p != nullptr){
if(p != nullptr){
s.push(p);
p = p->left;
}
else{
p = s.top();
s.pop();
res.push_back(p->val);
p = p->right;
}
}
return res;
}
};
LeetCode之Binary Tree Inorder Traversal
最新推荐文章于 2022-05-25 22:41:09 发布