提出問題:給定一個二叉搜索樹(Binary Search Tree),把它轉換成爲累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。
解決思路:使用新的遍歷方式(右子樹,根、左子樹)遍歷整棵樹。設置全局變量累加值,再逐一更新節點。
代碼如下( ̄▽ ̄):
# 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.re = 0
def convertBST(self, root: TreeNode) -> TreeNode:
if root==None:
return root
self.toBST(root)
return root
def toBST(self,node: TreeNode):
if node==None:
return
else:
self.toBST(node.right)
node.val=node.val + self.re
self.re = node.val
self.toBST(node.left)
時間與空間複雜度: