美文网首页
538. Convert BST to Greater Tree

538. Convert BST to Greater Tree

作者: JERORO_ | 来源:发表于2018-09-16 03:53 被阅读0次

问题描述

Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.

思路

先用recursive的方法,把数字按从大到小读一遍,每个数字+=上一个数字(即所有比该数字大的数字总和),存进list
在recur一遍,从小到大把val存进每个node

class Solution:
    
    def convertBST(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        list = [0]
        self.test(root, list)
        print (list)
        self.setValue(root, list)
        return root
        
    def test(self, root, list):
        if (root):
            self.test(root.right, list)
            list.append(root.val+list[-1])
            self.test(root.left, list)
            
    def setValue(self, root, list):
        if (root):
            self.setValue(root.left, list)
            root.val = list[-1]
            list.pop()
            self.setValue(root.right, list)

相关文章

网友评论

      本文标题:538. Convert BST to Greater Tree

      本文链接:https://www.haomeiwen.com/subject/dkdxnftx.html