双指针法
void midorder(vector<int>&res, TreeNode* root)
{
if(root == NULL) return;
midorder(res, root->left);
res.push_back(root->val);
midorder(res, root->right);
}
vector<int> inorderTraversal(TreeNode* root) {
// write code here
vector<int>res;
midorder(res,root);
return res;
}
入栈法
vector<int> inorderTraversal(TreeNode* root) {
// write code here
vector<int>res;
stack<TreeNode*>s;
while(root != NULL || !s.empty())
{
while(root != NULL)
{
s.push(root);
root = root->left;
}
TreeNode* node =s.top();
s.pop();
res.push_back(node->val);//将栈顶元素,添加到数组中
root = node->right;
}
return res;
}