1. 程式人生 > 其它 >LeetCode-1022. 從根到葉的二進位制數之和

LeetCode-1022. 從根到葉的二進位制數之和

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

給出一棵二叉樹,其上每個結點的值都是 0 或 1 。每一條從根到葉的路徑都代表一個從最高有效位開始的二進位制數。

例如,如果路徑為 0 -> 1 -> 1 -> 0 -> 1,那麼它表示二進位制數 01101,也就是 13 。
對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。

返回這些數字之和。題目資料保證答案是一個 32 位 整數。

來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers
二叉樹遍歷方式為前序遍歷、中序遍歷、後序遍歷、層序遍歷,這裡我覺得比較符合題意的方式是前序遍歷,所以我用前序遍歷的方式去解決,需要注意的是進位制間的轉化。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumRootToLeaf(self, root: Optional[TreeNode]) -> int:
        self.res = 0
        self.dfs(root, 0)
        
return self.res def dfs(self, root, pre): if not root:
      return 0 pre = str(pre) + str(root.val) #按照路徑相加 if not root.left and not root.right: self.res += int(pre, 2) # 如果遇到葉子節點則轉化為十進位制並更新答案 self.dfs(root.left, pre) self.dfs(root.right, pre)

提交檢視通過

搜尋

複製