538. Convert BST to Greater Tree
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了538. Convert BST to Greater Tree相关的知识,希望对你有一定的参考价值。
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:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def convertBST(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
a = []
if root is None:
return root
def inorder(root):
if root.left:
inorder(root.left)
a.append(root.val)
if root.right:
inorder(root.right)
inorder(root)
for i in range(len(a)-2,-1,-1):
a[i] += a[i+1]
pos = 0
def change(root):
nonlocal pos
if root.left:
change(root.left)
root.val = a[pos]
pos += 1
if root.right:
change(root.right)
change(root)
return root
以上是关于538. Convert BST to Greater Tree的主要内容,如果未能解决你的问题,请参考以下文章
538. Convert BST to Greater Tree
538. Convert BST to Greater Tree
538. Convert BST to Greater Tree
538. Convert BST to Greater Tree