【树】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遍历有了一定的认识和了解了。这些都是我们学习数据结构最最基础的东西,也是必不可少的知识,我们必须掌握。如果你感觉这篇文章对你有帮助的话,不要忘了点赞关注和收藏哦!

posted @ 2022-06-08 23:52  背包Yu  阅读(47)  评论(0编辑  收藏  举报  来源