题目如下:

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 13 Output: 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 = None class 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

最新文章

  1. Banner中利用Jquery隐藏显示下方DIV块
  2. javaScript系列:js中获取时间new Date()详细介绍
  3. C#中隐藏(new)、方法重写(override)、重载(overload)的区别
  4. CentOS 7 vs CentOS 6的不同
  5. 用vue实现模态框组件
  6. 【转】【C#】C#性能优化总结
  7. [LAMP]——mod_security和mod_evasive模块的安装
  8. poj 3666 Making the Grade(dp)
  9. Ubuntu 16.04 LTS 正式发布:系统将持续更新5年
  10. 【HDU1754】I Hate It(线段树)
  11. ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方式及原因
  12. ARM架构
  13. python常用校验方法总结
  14. java中二维数组内存分配
  15. 确认是否是因为做了物理I/O而导致的性能不佳
  16. hdoj3709(数位dp)
  17. CentOS7.4 系统下 Tomcat 启动慢解决方法
  18. Codeforces Beta Round #75 (Div. 2 Only)
  19. 《mysql必知必会》学习_第三章_20180724_欢
  20. mysql提示Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist解决方法

热门文章

  1. JS的一些日常
  2. 解决分布式事务基本思想Base和CPA理论、最终一致性|刚性事务、柔性事务
  3. 【InnoDB】缓冲池
  4. JRE和JVM的区别
  5. 【Dart学习】--Dart之字符串(String)的相关方法总结
  6. Linux系统之-常用命令及技巧
  7. ShopNC B2B2C最新版去除shop方法教程
  8. CF446D DZY Loves Games
  9. postgreSQL执行计划
  10. Golang 开发技能图谱