难度中等
给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
思路:简单的递归实现。
前序,中序,后序三种遍历方式采用迭代算法比较简单;层序遍历借助队列或者其他数据结构采用跌打实现比较简单
前序遍历:根节点->左节点->右节点
中序遍历:左节点->根节点->右节点
后序遍历:左节点->右节点->根节点
层序遍历:按层遍历
前序:递归算法
vector<int> ans;
vector<int> preorderTraversal(TreeNode* root) {
if(root==nullptr) return ans;
ans.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
return ans;
}
后序:递归算法
vector<int> ans;
vector<int> preorderTraversal(TreeNode* root) {
if(root==nullptr) return ans;
preorderTraversal(root->left);
preorderTraversal(root->right);
ans.push_back(root->val);
return ans;
}
层序:迭代算法
vector<int> ans;
vector<int> preorderTraversal(TreeNode* root) {
if(root==nullptr) return ans;
queue<TreeNode*> res;
res.push(root);
while(!res.empty()){
if(!res.front()){
res.push(res->left);
res.push(res->right);
ans.push(res.front()->val);
res.pop();
}
}
return ans;
}