problem:
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree [1,null,2,3]
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
solution:
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> rei;
stack<TreeNode *> undone;
TreeNode *pCurrent = root;
while (!undone.empty()|| pCurrent != NULL)
{
if (pCurrent->left != NULL)
{
undone.push(pCurrent);
pCurrent = pCurrent->left;
}
else
{
pCurrent = undone.top();
rei.push_back(pCurrent->val);
pCurrent = pCurrent->right;
}
}
return rei;
}
};