算法:二叉树中和为某一值的路径

阅读: 评论:0

算法:二叉树中和为某一值的路径

算法:二叉树中和为某一值的路径

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

示例1

  • 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
  • 输出:[[5,4,11,2],[5,8,4,5]]

提示

  • 树中节点总数在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

方法:深度优先搜索

从根开始计算,到找到某个节点的解,深度优先搜索(回溯)采用“一直向下走,走不通就掉头”的思想,相当于采用了“先跟遍历”的方法来构造搜索树。

算法如下:

  • 递归当前节点,如果当前节点为空,直接返回;
  • 否则目标和递减,用于判断是否满足目标和;
  • 把当前节点的值加入到每一个路径集合中;
  • 当目标和递减到0并且当前节点没有子节点,说明满足条件,直接把当前路径集合“复制”(因为路径集合是动态的)到结果集合中;
  • 递归遍历左/右子节点;
  • 向上回溯,需要将当前节点从路径集合中移除;
  • 递归遍历整个树节点完成后,返回结果集合;

代码如下:

复杂度分析

  • 时间复杂度:O(n),因为要先序遍历所有的节点。
  • 空间复杂度:O(n),最差的情况下,所有节点的都满足,即整个二叉树都存到结果集合中。

END

绳锯木断,水滴石穿,赠友人。

本文发布于:2024-01-31 17:04:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669188730063.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   路径   二叉树
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23