当前位置: 首页 > 后端技术 > Python

力扣-1038.把二叉搜索树转换为累加树【Python】

时间:2023-03-26 13:24:27 Python

ProblemLeetCode给定二叉搜索树(BST)的根,将其转换为更大的树,使得原始BST的每个键都更改为原始键加上BST中大于原始键的所有键的总和。提醒一下,二叉搜索树是满足这些约束的树:节点的左子树仅包含键小于节点键的节点。右子树的节点只包含键大于节点key的节点。左右子树也必须是二叉搜索树。注:本题同538:https://leetcode.com/problems...例1:输入:root=[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]示例2:输入:root=[0,null,1]输出:[1,null,1]示例3:输入:root=[1,0,2]Output:[3,3,2]Example4:Input:root=[3,2,4,1]Output:[7,9,4,10]Constraints:Thenumberofnod树中的es在[1,100].0<=Node.val<=100范围内,树中的所有值都是唯一的。根保证是有效的二叉搜索树。树的根节点,树的节点值不同,请将其转化为累积树(GreaterSumTree),使每个节点节点的新值等于值之和大于或等于原始树中的node.val提醒一下,二叉搜索树满足以下约束:节点的左子树仅包含键小于节点键的节点。节点的右子树仅包含键大于节点键的节点。左右子树也必须是二叉搜索树。注:本题同538:https://leetcode-cn.com/problems/convert-bst-to-greater-tree/例1:输入:[4,1,6,0,2,5,7、null,null,null,3,null,null,null,8]输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]示例2:输入:root=[0,null,1]输出:[1,null,1]示例3:输入:root=[1,0,2]输出:[3,3,2]示例4:输入:root=[3,2,4,1]输出:[7,9,4,10]提示:树中的节点数在1到100之间。每个节点的值都在0到100之间。所有树中的值彼此不同。给定的树是二叉搜索树。中序遍历的思想是利用BST的中序遍历,也就是升序的特性,按照降序遍历BST的元素值。Python3定义#定义一个二叉树节点。#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:defbstToGst(self,root:TreeNode)->TreeNode:defdfs(root):nonlocalsumvalifroot:dfs(root.right)sumval+=root。瓦尔根。val=sumval#启用BST规范树dfs(root.left)sumval=0dfs(root)returnrootGitHubOpenPython