问题描述:
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> preorderTraversal(TreeNode * root)
{
vector<int> preorderSequence;
stack<TreeNode * > treeNodeStack;
TreeNode * node = root;
if(root == NULL)
return preorderSequence;
preorderSequence.push_back(node->val);
if(node->right)
treeNodeStack.push(node->right);
if(node->left)
treeNodeStack.push(node->left);
while(!treeNodeStack.empty())
{
node = treeNodeStack.top();
treeNodeStack.pop();
preorderSequence.push_back(node->val);
if(node->right)
treeNodeStack.push(node->right);
if(node->left)
treeNodeStack.push(node->left);
}
return preorderSequence;
}