博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】538. Convert BST to Greater Tree
阅读量:6580 次
发布时间:2019-06-24

本文共 1442 字,大约阅读时间需要 4 分钟。

题目如下:

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.

Example:

Input: The root of a Binary Search Tree like this:              5            /   \           2     13Output: The root of a Greater Tree like this:             18            /   \          20     13

解题思路:一时卡壳了,只想出了一个很挫的方法,把所有节点的值都取出来,然后找出每个节点的所有比其大的值的和,这个值就是这个节点的值要加上的大小,最后再遍历一次树修改节点。

代码如下:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    l = []    dic = {}    def traverse(self,node,mode):        if node == None:            return        if mode == 1:            self.l.append(node.val)        else:            node.val += self.dic[node.val]        if node.left != None:            self.traverse(node.left,mode)        if node.right != None:            self.traverse(node.right,mode)    def convertBST(self, root):        """        :type root: TreeNode        :rtype: TreeNode        """        self.l = []        self.dic = {}        self.traverse(root,1)        ul = sorted(list(set(self.l)))        total = 0        for i in ul[::-1]:            self.dic[i] = total            total += i        self.traverse(root, 0)        return root

 

转载于:https://www.cnblogs.com/seyjs/p/10208410.html

你可能感兴趣的文章
编译安装mysql
查看>>
在windows上秒开应用程序
查看>>
【20180611】MySQL OOM
查看>>
memcached
查看>>
Python面向对象编程(一)
查看>>
决心书
查看>>
决心书
查看>>
【转】Ubuntu下安装使用ffmpeg
查看>>
Heartbeat编译安装
查看>>
决心书
查看>>
win10系统属性面板的几种打开方法
查看>>
如何把图片上的文字转换成word?
查看>>
7z命令行
查看>>
word怎么压缩图片
查看>>
C语言编程实现 输入一个非负整数,返回组成它的数字之和(递归方法)
查看>>
c3p0
查看>>
redis cluster 集群搭建(增、删、改、查) :5.0.2
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
引号-下划线,连接多个变量
查看>>