首页 > 其他 > 详细

【leetcode】1038. Binary Search Tree to Greater Sum Tree

时间:2019-06-15 09:09:29      阅读:143      评论:0      收藏:0      [点我收藏+]

题目如下:

Given the root of a binary search tree with distinct values, modify it so that every node has a new value equal to the sum of the values of the original tree that are greater than or equal to node.val.

As a reminder, a binary search tree is a tree that satisfies these constraints:

  • The left subtree of a node contains only nodes with keys less than the node‘s key.
  • The right subtree of a node contains only nodes with keys greater than the node‘s key.
  • Both the left and right subtrees must also be binary search trees.

 

Example 1:

技术分享图片

Input: [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

 

Note:

  1. The number of nodes in the tree is between 1 and 100.
  2. Each node will have value between 0 and 100.
  3. The given tree is a binary search tree.

解题思路:我的方法简单粗暴,第一次遍历树,把树中每个节点的值存入list;接下来再遍历一次,对于每个node,在list中找出所有值比自己大的元素的和,加上node自身的值,即为这个node的新值。

代码如下:

# 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):
    val_list = []
    def recursive(self,node):
        self.val_list.append(node.val)
        if node.right != None:
            self.recursive(node.right)
        if node.left != None:
            self.recursive(node.left)

    def reValue(self,node):
        inx = self.val_list.index(node.val)
        node.val += sum(self.val_list[inx+1:])
        if node.right != None:
            self.reValue(node.right)
        if node.left != None:
            self.reValue(node.left)

    def bstToGst(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if root != None:
            self.val_list = []
            self.recursive(root)
            self.val_list.sort()
            self.reValue(root)
        return root

 

【leetcode】1038. Binary Search Tree to Greater Sum Tree

原文:https://www.cnblogs.com/seyjs/p/11026162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!