给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
中序遍历的变化版本
from collections import deque
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
if root is None:
return root
p = root
stack = deque([])
tem_sum = 0
while stack or p:
if p:
stack.append(p)
p = p.right
else:
p = stack.pop()
tem_sum += p.val
p.val=tem_sum
p = p.left
return root