【发布时间】:2021-02-03 08:27:09
【问题描述】:
我正在用 Python 做上面的 leetcode 问题。通常我所做的是在 jupyter notebook 中解决问题,然后在完成后将其复制并粘贴到 leetcode 解决方案框中。但是,我遇到了这个问题。
问题定义如下:
给定二叉搜索树 (BST) 的根,将其转换为更大的树,使得原始 BST 的每个键都更改为原始键加上所有大于 BST 中原始键的键的总和。
提醒一下,二叉搜索树是满足这些约束的树:
节点的左子树只包含键小于节点键的节点。 节点的右子树只包含键大于节点键的节点。 左右子树也必须是二叉搜索树。
该问题的示例输入和输出如下所示
Input: root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
进一步设置问题解决方案如下
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def bstToGst(self, root: TreeNode) -> TreeNode:
我对如何解决这个问题感到困惑。最初我以为我会在提供的列表中进行某种循环。然而,在阅读了讨论中的一些示例响应后,我看到使用了诸如 root.right 和 root.left 之类的命令。我该如何在 jupyter 笔记本中执行此操作?我没有使用 TreeNodes 的经验,所以我想以正确的方式解决这个问题并学习基本概念,而不是用另一种方式强行通过它。非常感谢所有帮助。
谢谢
【问题讨论】:
-
使用reverse-order-traversal 按从大到小的顺序读取节点。维护一个初始化为0的全局累加器。读取任意一个节点时,将全局累加器的值加到节点上,然后将节点的原始值加到累加器中
标签: python