题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
题目来源:https://oj.leetcode.com/problems/binary-tree-preorder-traversal/
解题思路:利用栈,将树的右节点和左节点分别入栈,访问根节点。知道栈为空。
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
vector<int> preorderTraversal(TreeNode *root)
{
vector<int> result;
if(root==NULL)
return result;
stack<TreeNode *> s;
s.push(root);
while(!s.empty())
{
TreeNode *temp=s.top();
result.push_back(temp->val);
s.pop();
if(temp->right!=NULL)
s.push(temp->right);
if(temp->left!=NULL)
s.push(temp->left);
}
return result;
}
int main()
{
TreeNode *root=new TreeNode(1);
root->left=new TreeNode(2);
root->right=new TreeNode(3);
vector<int> result=preorderTraversal(root);
system("pause");
return 0;
}