思路:深度优先搜索

从根节点开始,每当遇到一个节点时,将当前节点的值从目标和中减去。如果到达叶子节点时,目标和恰好为 0,则说明存在一条从根节点到叶子节点的路径,满足其路径和为目标和。

为了记录路径,需要在深度优先搜索时维护从根节点到当前节点的路径。可以使用一个数组 path,记录从根节点到当前节点的路径。在每个节点处,需要将当前节点加入路径 path 中,递归左右子树,递归完成后,需要将当前节点从 path 中删除,以便回溯到父节点时的正确路径。

时间复杂度:每个节点都需要遍历一次,时间复杂度为 O(n),其中 n 是二叉树的节点数。

空间复杂度:空间复杂度取决于递归栈的深度,最坏情况下,即二叉树退化为链表时,递归栈的深度为 O(n),因此空间复杂度为 O(n)。

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

原文地址: https://www.cveoy.top/t/topic/fJKs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录