leetcode 129

这题想要找到所有的从根节点到叶子节点顺出来的值的总和。此题采用传统的递归方法,但是有两个坑值得注意,首先我们在递归时应该保存的是字符串,而不是数值,因为如果是数值的话,需要知道树的高度,树的左右子树高度不同,对应着加的root.val的幂次就不同。但是当向上层返回高度时,就不知道返回哪个高度了,所以不可行。其次递归的最底层应该从 有数值的开始,而不是None开始。这是因为如果从None开始,相当于遍历了所有高度的子树。噗!写到这里,突然发现保存数值是可以的,因为题目想要只是最高的那个子树的值,所以如果是数值的话,保存那个最高的就好了。

代码如下:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    
    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        def temp(root):
            if root == None:
                return
            if root.left == None and root.right == None:
                return [str(root.val)]
            left_value = temp(root.left)
            right_value = temp(root.right)
            temp_result = []
            if left_value != None:
                for tempp in left_value:
                    temp_result.append(str(root.val)+tempp)
            if right_value !=None:
                for tempp in right_value:
                    temp_result.append(str(root.val)+tempp)
            return temp_result
        result_list = temp(root)
        result = 0
        if result_list == None:
            return result
        for temp in result_list:
            result += int(temp)
        return result

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值