Leetcode 538 二叉樹轉換為累加樹

2021-09-26 23:01:26 字數 956 閱讀 8217

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節點即可,這...