非递归:
class Solution {
public:
vector<int> preorderTraversal(TreeNode *root) {
vector<int> v;
stack<TreeNode*> s;
if(root == NULL)
return v;
s.push(root);
TreeNode* tmp;
while(!s.empty()){
tmp = s.top();
s.pop();
v.push_back(tmp -> val);
if(tmp -> right != NULL)
s.push(tmp -> right);
if(tmp -> left != NULL)
s.push(tmp -> left);
}
return v;
}
};递归:
class Solution {
public:
vector<int> v;
vector<int> preorderTraversal(TreeNode *root) {
preTra(root);
return v;
}
void preTra(TreeNode* root){
if(root == NULL)
return;
v.push_back(root -> val);
preTra(root -> left);
preTra(root -> right);
}
};
本文详细介绍了递归和非递归两种方法实现二叉树的前序遍历,并通过代码展示了各自的特点和应用场景。
385

被折叠的 条评论
为什么被折叠?



