题目链接:click~
递归解法:
/*题意:二叉树的前序遍历 */
class Solution {
public:
void PreOrderTraverse(TreeNode *T, vector<int> &v) {
if(T == NULL) return;
v.push_back(T->val);
PreOrderTraverse(T->left, v);
PreOrderTraverse(T->right, v);
}
vector<int> preorderTraversal(TreeNode *root) {
vector<int> v;
PreOrderTraverse(root, v);
return v;
}
};
栈解法:
class Solution {
private:
vector<int> v;
public:
void pushleft(TreeNode *root, stack<TreeNode*> &s) {
if(root != NULL) {
s.push(root);
v.push_back(root->val);
pushleft(root->left, s);
}
}
vector<int> preorderTraversal(TreeNode *root) {
if(root == NULL) return v;
stack<TreeNode*> s;
pushleft(root, s);
while(!s.empty()) {
TreeNode *tmp = s.top();
s.pop();
pushleft(tmp->right, s);
}
return v;
}
};