LeetCode 144.二叉树的前序遍历
题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/
题目
题解
递归方法
class Solution {
public:
void Traversal(TreeNode* cur,vector<int> &vec){
if(cur == NULL) return;
vec.push_back(cur->val);
Traversal(cur->left,vec);
Traversal(cur->right,vec);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
Traversal(root,result);
return result;
}
};
非递归方法
注意:先将右孩子节点加入栈,再将左孩子节点加入栈。
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> st;
vector<int> result;
if(root == NULL) return result;
st.push(root);
while(!st.empty()){
TreeNode* node = st.top();
st.pop();
result.push_back(node->val);
if(node->right) st.push(node->right);
if(node->left) st.push(node->left);
}
return result;
}
};