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)

提交查看通过

posted @ 2022-05-30 21:11  *小白*  阅读(34)  评论(0)    收藏  举报