题目:
题目链接: https://leetcode-cn.com/problems/convert-bst-to-greater-tree/
解题思路:
类似中序遍历的栈的使用方式,参考:二叉树的中序遍历,只不过把遍历方式修改为根 -> 右 -> 左
设置一个变量add_num来记录比当前数字大的所有数字的和
代码实现:
# 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: TreeNode) -> TreeNode:
if not root:
return root
add_num = 0
stack = [root]
while stack:
node = stack[-1]
if node.right:
stack.append(node.right)
continue
while stack:
node = stack[-1]
node.val += add_num
add_num = node.val
stack.pop()
if node.left:
stack.append(node.left)
break
return root