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