二叉树的中序遍历,用了两种方法-递归和迭代(需要用到栈)。
递归解法: class Solution { public: vector< int > res; void inorder(TreeNode* root) { if (!root) { return; } inorder(root->left); res.push_back(root->val); inorder(root->right); } vector< int > inorderTraversal(TreeNode* root) { inorder(root); return res; } };
迭代解法: class Solution { public: vector< int > inorderTraversal(TreeNode* root) { vector< int > result; stack<TreeNode*> s; while(!s.empty()||root!=nullptr){ while(root!=nullptr){ s.push(root); root=root->left; } root=s.top(); s.pop(); result.push_back(root->val); root=root->right; } return result; } };