二叉树的所有路径

在这里插入图片描述

思路

题目要我们求从根节点到叶子节点的路径,所以需要前序遍历,这样会很方便的让父节点指向孩子节点,从而找到对应的路径。
本题中会用到回溯,因为要把路径记录下来,然后回溯一个路径到另一个路径。
在这里插入图片描述

递归法

1、确定递归函数的参数和返回值
要传入根节点,记录每一条路径的path,存放结果集的result,返回值无

void traversal(TreeNode* cur,vector<int>& path,vector<string>& result)

2、确定递归的终止条件
本题中要找到叶子节点(当cur不为空,其左右孩子都为空),才开始结束的处理逻辑(把路径放到result里)

if(cur->left==nullptr && cur->right==nullptr)
{
   
  string sPath;
  for(int ii=0;i<path.size()-1;ii++){
   //将path里记录的路径转为string格式
     sPath+=to_string(path[ii]);
     spath+="->";
  }
  //循环中之所以不处理容器最后一个元素,是因为最后一个元素不需要->
  sPath+=to_string(path[path.size()-1]);//记录最后一个(叶子)结点
  result.push_back(sPath);//向result容器里收集一个路径
  return
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值