給定乙個二叉搜尋樹(binary search tree),把它轉換成為累加樹(greater tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。
輸入: 原始二叉搜尋樹:
5/ \
2 13
輸出: 轉換為累加樹:
18/ \
20 13
二叉搜尋樹是一棵空樹,或者是具有下列性質的二叉樹:
1、若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值;
2、若它的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值;
3、它的左、右子樹也分別為二叉搜尋樹。
所以進行反向的中序遍歷進行計算
# definition for a binary tree node.
# class treenode(object):
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution(object):
def convertbst(self, root):
""":type root: treenode
:rtype: treenode
"""deque = collections.deque()
def dfs(root):
if root:
dfs(root.right)
root.val = sum(deque)
dfs(root.left)
dfs(root)
return root
LeetCode 538 把二叉搜尋樹轉換為累加樹
題目鏈結 給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 原始二叉搜尋樹 5 2 13輸出 轉換為累加樹 18 20 13將每個點的權值存入乙個陣列然後排序,計算字首和,然後...
Leetcode 538 二叉樹轉換為累加樹
time 20190907 type easy 給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 二叉搜尋樹 5 213輸出 轉換為累加樹 18 2013bst的中序遍歷是乙個...
538 把二叉搜尋樹轉換為累加樹
給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 二叉搜尋樹 5 2 13 輸出 轉換為累加樹 18 20 13 和 的應用 用 傳入某值的位址,可以保留函式中修改的資料 de...