Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
Return:
[ [5,4,11,2], [5,8,4,5] ]
和112. Path Sum差别不大,多保存一下路径即可。
stack中保存的是当前节点,当前path所有节点的val(这是一个list),和当前path的sum。
class Solution:
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
if root is None: return root
stack=[(root, [root.val] ,root.val)]
final=[]
while stack:
root, lis, listsum=stack.pop(0)
if root.left is None and root.right is None:
if listsum==sum: final.append(lis)
else: continue
if root.left:
stack.append((root.left, lis+[root.left.val], listsum+root.left.val))
if root.right:
stack.append((root.right, lis+[root.right.val], listsum+root.right.val))
return final

本文探讨了一种算法,用于在给定的二叉树中寻找所有从根到叶子节点的路径,使得路径上节点值的总和等于指定的数值。通过使用栈来保存节点及其路径上的值和当前路径的总和,该算法能够有效地遍历二叉树并找出符合条件的所有路径。
545

被折叠的 条评论
为什么被折叠?



