將二叉搜索樹換爲累加樹(Python3)

提出問題:給定一個二叉搜索樹(Binary Search Tree),把它轉換成爲累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。

clipboard.png

解決思路:使用新的遍歷方式(右子樹,根、左子樹)遍歷整棵樹。設置全局變量累加值,再逐一更新節點。

代碼如下( ̄▽ ̄):

# 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)

時間與空間複雜度:

clipboard.png

鏈接:https://leetcode-cn.com/probl...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章