声明:这是本人的第一篇博客,主要用于自己的笔记,如有错误纯属正常,希望得到大佬的指导。
最近在学数据结构,需要用到三叉树遍历所有路径,研究了好几天找了很多方法都没实现,最后在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,形参这里必须要以引用传递,之前一直没用,所以后