time: 20190907
type: easy
給定乙個二叉搜尋樹(binary search tree),把它轉換成為累加樹(greater tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。
例如:
輸入: 二叉搜尋樹:
5/ \
213輸出: 轉換為累加樹:
18/ \
2013
bst的中序遍歷是乙個遞增序列,顯然每個結點值是後續所有結點值之和。
按照逆中序遍歷,過程中累加,並將累加的和新增到當前結點即可。用遞迴的思路比較好解。
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
__init__
(self)
: self.num =
0def
convertbst
(self, root: treenode)
-> treenode:
# 中序遍歷後的序列是遞增序列
ifnot root:
return
none
self.convertbst(root.right)
root.val += self.num
self.num = root.val # 儲存的是累加過後的數值
self.convertbst(root.left)
return root
end. LeetCode 538 把二叉搜尋樹轉換為累加樹
給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。輸入 原始二叉搜尋樹 5 2 13 輸出 轉換為累加樹 18 20 13二叉搜尋樹是一棵空樹,或者是具有下列性質的二叉樹 1 若它的左子樹...
LeetCode 538 把二叉搜尋樹轉換為累加樹
題目鏈結 給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 原始二叉搜尋樹 5 2 13輸出 轉換為累加樹 18 20 13將每個點的權值存入乙個陣列然後排序,計算字首和,然後...
(二叉樹)538 把二叉搜尋樹轉換為累加樹
給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。二叉搜尋樹的中序遍歷的反序是乙個降序陣列,因此只需用乙個sum記錄到當前節點為止的所有陣列和,並把這個值更新到二叉樹的root節點即可,這...