【树】N叉树的遍历【力扣589、力扣590】超详细的解释和注释
说在前面
欢迎朋友们来到我的博客。
今天我们的重点是,N叉树的遍历。
今天,博主就带来两道经典的题目,领着大家理解N叉树的前序遍历和后序遍历!
当然,还想学习其它算法的朋友们,可以通过订阅博主的算法专栏,或者数据结构专栏持续学习!
当然,博主这里还把二叉树的四种遍历方式的汇总博客提供给大家,供大家学习,两者的思路是一样的!
题目:
博主给大家的话
那么这里博主先安利一下一些干货满满的专栏啦!
数据结构专栏:手撕数据结构 这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支持一下吧!
算法专栏:算法 这里可以说是博主的刷题历程,里面总结了一些经典的力扣上的题目,和算法实现的总结,对考试和竞赛都是很有帮助的!
力扣刷题专栏:跟着博主刷Leetcode 想要冲击ACM、蓝桥杯或者大学生程序设计竞赛的伙伴,这里面都是博主的刷题记录,希望对你们有帮助!
C的深度解剖专栏:C语言的深度解剖 想要深度学习C语言里面所蕴含的各种智慧,各种功能的底层实现的初学者们,相信这个专栏对你们会有帮助的!
N叉树的前序遍历
题目描述
代码实现
其实思路和二叉树前序遍历是一样的,先遍历自己的节点,在遍历孩子节点,遇到空返回,很简单。
class Solution {
private:
vector<int>ret;
void dfs(Node*root){
if(root==nullptr){
return;
}
ret.push_back(root->val);//先遍历自己节点
//再遍历孩子节点,和二叉树的区别就是,这里是遍历一个指针数组而已。
for(int i=0;i<root->children.size();i++){
dfs(root->children[i]);
}
}
public:
vector<int> preorder(Node* root) {
dfs(root);
return ret;
}
};
N叉树的后序遍历
题目描述
代码实现
class Solution {
private:
vector<int>ret;
void dfs(Node*root){
if(root==nullptr){
return;
}
//先遍历孩子节点
for(int i=0;i<root->children.size();i++){
dfs(root->children[i]);
}
//再遍历自身节点
ret.push_back(root->val);
}
public:
vector<int> postorder(Node* root) {
dfs(root);
return ret;
}
};
尾声
相信大家看到这里,已经对N叉树的DFS遍历有了一定的认识和了解了。这些都是我们学习数据结构最最基础的东西,也是必不可少的知识,我们必须掌握。如果你感觉这篇文章对你有帮助的话,不要忘了点赞关注和收藏哦!