N叉树遍历所有路径

本文介绍如何遍历N叉树的所有路径,通过深入研究LeetCode上的二叉树遍历问题,作者发现两者思路相似。文章提供了一个三叉树结构体的定义,以及基于深度优先搜索的遍历函数实现,最后展示了一个具体的树结构和验证结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:这是本人的第一篇博客,主要用于自己的笔记,如有错误纯属正常,希望得到大佬的指导。

最近在学数据结构,需要用到三叉树遍历所有路径,研究了好几天找了很多方法都没实现,最后在LeetCode上研究了一下“二叉树遍历所有路径”,最后发现与N叉树遍历所有路径道理完全相同,下面与大家分享一下主要的思想,并给出实现代码,供大家参考。

1.三叉树结构体

struct TreeNode
{
	int val;
	TreeNode* left;
	TreeNode* mid;
	TreeNode* right;
	TreeNode():val(0),left(nullptr),mid(nullptr),right(nullptr){}
	TreeNode(int x):val(x),left(nullptr),mid(nullptr),right(nullptr){}
	TreeNode(int x,TreeNode* left,TreeNode* mid,TreeNode* right):val(x),left(left),mid(mid),right(right){}
};

注:这里才发现,原来结构体也有类似的构造函数,这里用了“成员初始值列”的方式,效率较高。

2.遍历所有路径函数实现

主要思路:主要利用了“深度优先搜索”的思想,从根节点依次逐层向下遍历,当发现没有子节点时(即该节点为叶子节点),将节点的数值放入容器;否则,继续向下遍历节点,直到叶子节点。

//vector<string>& paths,形参这里必须要以引用传递,之前一直没用,所以后
目的: 掌握与文件和目录树有关的系统调用和库函数。 要求: 1、编写程序myfind 命令语法: myfind <pathname> [-comp <filename> | -name <str>…] 命令语义: (1)myfind <pathname> 的功能: 除了具有与程序4-7相同的功能外,还要输出在<pathname>目录子树之下,文件长度不大于4096字节的常规文件,在所有允许访问的普通文件中所占的百分比。程序不允许打印出任何路径名。 (2)myfind <pathname> -comp <filename>的功能: <filename>是常规文件的路径名(非目录名,但是其路径可以包含目录)。命令仅仅输出在<pathname>目录子树之下,所有与<filename>文件内容一致的文件的绝对路径名。不允许输出任何其它的路径名,包括不可访问的路径名。 (3)myfind <pathname> -name <str>…的功能: <str>…是一个以空格分隔的文件名序列(不带路径)。命令输出在<pathname>目录子树之下,所有与<str>…序列中文件名相同的文件的绝对路径名。不允许输出不可访问的或无关的路径名。 <pathname>和<filename>均既可以是绝对路径名,也可以是相对路径名。<pathname>既可以是目录,也可以是文件,此时,目录为当前工作目录。 2、注意尽可能地提高程序的效率。注意避免因打开太文件而产生的错误。 3、遍历目录树时,访问结点(目录项)的具体操作应当由遍历函数dopath携带的函数指针参数决定。这样程序的结构清晰,可扩充性好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值