其实是一种递归的思想。
前序遍历:
void dfs(TreeNode* root){
if(root==nullptr)
return;
process(root->val); //当前节点数据处理
dfs(res,root->left);
dfs(res,root->right);
}
中序遍历:
void dfs(TreeNode* root){
if(root==nullptr)
return;
dfs(res,root->left);
process(root->val);
dfs(res,root->right);
}
后序遍历:
void dfs(TreeNode* root){
if(root==nullptr)
return;
dfs(res,root->left);
dfs(res,root->right);
process(root->val);
}
广度优先搜索
以二叉树的遍历为例子。就是一层一层的遍历。用队列可以实现。
vector> levelOrder(TreeNode* root) { if(root==nullptr) return vector >(); queue Q; //队列 Q.push(root); vector > res; //存每一层的数据 while(!Q.empty()){ int size = Q.size(); //当前层大小 res.push_back(vector ()); for(int i=0;i val); if(node->left) Q.push(node->left); if(node->right) Q.push(node->right); } } return res; }
B站上一个比较通俗的视频讲解:python数据结构与算法系列课程



