vector<int> inorderTraversal(TreeNode *root)
{
vector<int> result;
if (root == NULL)
return result;
stack<TreeNode*> s;
TreeNode *p = root;
while (p || !s.empty())
{
while (p)
{
s.push(p);
p = p->left;
}
if (!s.empty())
{
p = s.top();
s.pop();
result.push_back(p->val);
p = p->right;
}
}
return result;
}