Leetcode 1022.從根到葉的二進制數之和(Sum of Root To Leaf Binary Numbers)

Leetcode 1022.從根到葉的二進制數之和

1 題目描述(Leetcode題目鏈接

  給出一棵二叉樹,其上每個結點的值都是 0 或 1 。每一條從根到葉的路徑都代表一個從最高有效位開始的二進制數。例如,如果路徑爲 0 -> 1 -> 1 -> 0 -> 1,那麼它表示二進制數 01101,也就是 13 。

對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。

以 10^9 + 7 爲模,返回這些數字之和。
在這裏插入圖片描述

輸入:[1,0,1,0,1,0,1]
輸出:22
解釋:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

提示:

  • 樹中的結點數介於 1 和 1000 之間。
  • node.val 爲 0 或 1 。

2 題解

  深度優先搜索就可以了。

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

class Solution:
    def dfs(self, root, val):
        val <<= 1
        val += root.val
        if not root.left and not root.right:
            self.res += val
            return
        if root.left: self.dfs(root.left, val)
        if root.right: self.dfs(root.right, val)
        
    def sumRootToLeaf(self, root: TreeNode) -> int:
        self.res = 0
        self.dfs(root, 0)
        return self.res%1000000007
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章