129 - 求根到葉子節點數字之和 - Python
給定一個二叉樹,它的每個結點都存放一個 10-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.
題目要求每條根節點到葉子節點的路徑所表示的數字之和,因此,我們需要從根節點深度遍歷所有可能的路徑,並記錄路徑上的節點的val
,最後統計每個路徑表示的數字之和即可。思想簡單,直接上程式碼:
# 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:
if not root: return 0
r = []
def track(root, path):
if not root: return
if not root.left and not root.right: # 已經到達葉子節點
path.append(str(root.val)) # 完整的一條路徑
for i in range(len(path)): # 去除前面可能的'0'
if path[i] != '0':
r.append(eval(''.join(path[i:]))) # 使用eval()得到字串表示的int型數值,儲存到r
break
path.pop() # 彈出
return
path.append(str(root.val)) # 做選擇
track(root.left, path) # 遍歷左子樹
track(root.right, path) # 遍歷右子樹
path.pop() # 撤銷選擇
track(root, [])
return sum(r) # 求和
相關文章
- leetcode129. 求根到葉子節點數字之和LeetCode
- LeetCode-129-求根節點到葉節點數字之和LeetCode
- 【LeetCode】每日一題129:求根到葉子節點數字之和LeetCode每日一題
- 404. 左葉子之和
- MySQL:非葉子節點指標MySql指標
- 二叉樹節點個數,葉子個數,第K層個數,最低公共節點二叉樹
- LeetCode-404-左葉子之和LeetCode
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- 為什麼二叉樹中葉子節點個數等於度為2的節點個數+1二叉樹
- mysql根據節點查詢所有葉節點MySql
- 一句話查詢出指定節點的葉子記錄
- DreamJudge-1294-字尾子串排序排序
- 數字之魅:子陣列之和的最大值[二維]+[三維]陣列
- 二叉樹葉子個數二叉樹
- jQuery如何獲取元素父節點和子節點jQuery
- 費馬點(到三角形頂點之和最小的點)
- 程式碼隨想錄day15 || 110 平衡二叉樹,257 二叉樹所有路徑,404 左葉子之和,222 完全二叉樹節點個數二叉樹
- json 陣列已知父節點,求所有子節點JSON陣列
- ural 1297 最長迴文子串 字尾陣列陣列
- 【機器學習】數值分析02——任意方程求根機器學習
- 兩數之和
- css 定位如何依次定位多個節點下面的子節點CSS
- JavaScript 監聽子節點改變JavaScript
- MySQL遞迴查詢樹狀表的子節點、父節點MySql遞迴
- 資料庫——查詢樹形結構某節點的所有子節點、所有父節點資料庫
- python leetcode 之兩數之和(two sum)PythonLeetCode
- LeetCode-Python 1. 兩數之和LeetCodePython
- leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)LeetCode二叉樹
- Python判斷字串是否為字母或者數字(浮點數)Python字串
- 關於insert操作造成索引葉節點分裂的驗證索引
- 判斷DOM元素是否含有子節點
- day 15|二叉樹part03|110.平衡二叉樹|257. 二叉樹的所有路徑|404.左葉子之和| 222.完全二叉樹的節點個數二叉樹
- Python 數字Python
- Leetcode力扣1 兩數之和(Python版)LeetCode力扣Python
- 1. 兩數之和
- 18_四數之和
- 如何計算二叉樹中葉節點的數量 - Java迭代和遞迴演算法二叉樹Java遞迴演算法
- dom4j 根據xml節點路徑查詢節點,找到對應的目標節點下的子節點,對節點Text值進行修改XML