问题描述:
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
思路:借助栈来实现树的中序遍历。
代码:
vector<int> inorderTraversal(TreeNode * root)
{
vector<int> inorderSequence;
stack<TreeNode *> treeNodeStack;
TreeNode * node = root;
if(node == NULL)
return inorderSequence;
while(node != NULL || !treeNodeStack.empty())
{
while(node != NULL)
{
treeNodeStack.push(node);
node = node->left;
}
node = treeNodeStack.top();
treeNodeStack.pop();
inorderSequence.push_back(node->val);
node = node->right;
}
}