【二叉树-路径总和】

LeetCode113 路径总和面试

转载于:路径总和
给定一个二叉树和一个目标和,找到全部从根节点到叶子节点路径总和等于给定目标和的路径。app

说明: 叶子节点是指没有子节点的节点。

          5
         / \
        4   8
       /   / \
      11  13  4
     /  \    / \
    7    2  5   1
#_*_coding:utf-8_*_


class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def pathSum(self, root, sum):
        result = []
        self.help(root, sum, [], result)
        return result

    def help(self, root, sum, path, result):
        if root is None:
            return
        
        #步骤相似先序遍历
        path.append(root.val)
        #遍历根节点
        if root.left is None and root.right is None:
            if sum == root.val:
                result.append(list(path))
        #遍历左子树
        self.help(root.left, sum - root.val, path, result)
        #遍历右子树
        self.help(root.right, sum - root.val, path, result)
        path.pop()

root = TreeNode(5)
l1 = TreeNode(4)
r1 = TreeNode(8)
root.left = l1
root.right = r1
l2 = TreeNode(11)
r2 = TreeNode(13)
r3 = TreeNode(4)
l1.left = l2
r1.left = r2
r1.right = r3
l3 = TreeNode(7)
l4 = TreeNode(2)
r4 = TreeNode(5)
r5 = TreeNode(1)
l2.left = l3
l2.right = l4
r3.left = r4
r3.right = r5

slu = Solution()

t = slu.pathSum(root,22)
print(t)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值