leetcode 129 求根到葉子節點數字之和

2021-09-29 09:43:44 字數 1517 閱讀 9638

給定乙個二叉樹,它的每個結點都存放乙個 0-9 的數字,每條從根到葉子節點的路徑都代表乙個數字。

例如,從根到葉子節點路徑 1->2->3 代表數字 123。

計算從根到葉子節點生成的所有數字之和。

說明: 葉子節點是指沒有子節點的節點。

示例 1:

輸入: [1,2,3]

1/ \

2 3

輸出: 25

解釋:從根到葉子節點路徑 1->2 代表數字 12.

從根到葉子節點路徑 1->3 代表數字 13.

因此,數字總和 = 12 + 13 = 25.

示例 2:

輸入: [4,9,0,5,1]

4/ \

9 0

/ \5 1

輸出: 1026

解釋:從根到葉子節點路徑 4->9->5 代表數字 495.

從根到葉子節點路徑 4->9->1 代表數字 491.

從根到葉子節點路徑 4->0 代表數字 40.

因此,數字總和 = 495 + 491 + 40 = 1026.

用深度優先遍歷,路徑的過程中就儲存當前這條路徑的數字和,當碰到葉子節點時,累加到總和上即可。

時間複雜度是o(n)

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

sumnumbers

(self, root: treenode)

->

int:

ifnot root:

return

0 stack =

[(root,0)

] cur_num =

0 cur_sum =

0while stack:

p, stat = stack.pop(

)if stat ==0:

(p,1))

cur_num = cur_num *

10+ p.val

if p.left:

(p.left,0)

)if p.right:

(p.right,0)

)else:if

(not p.left)

and(

not p.right)

: cur_sum += cur_num

cur_num =

(cur_num - p.val)/10

return

int(cur_sum)

Leetcode 129 求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3輸出 25解釋 從根到葉子節點路徑 1 2代表...

Leetcode 129 求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3輸出 25解釋 從根到葉子節點路徑1 2代表數...

LeetCode 129 求根到葉子節點數字之和

題目描述 提示幫助 提交記錄社群討論閱讀解答 隨機一題 給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 ...