首页 > 其他分享 >代码随想录 -- 二叉树 -- 把二叉搜索树转换为累加树

代码随想录 -- 二叉树 -- 把二叉搜索树转换为累加树

时间:2024-09-20 10:52:32浏览次数:3  
标签:pre return val -- self 随想录 tra 二叉树 root

538. 把二叉搜索树转换为累加树 - 力扣(LeetCode)

思路:

定义pre变量用来记录当前节点的前一个节点(右中左顺序遍历)的值。

递归出口:当root为空时,return。

单层递归逻辑:(右中左)

  • 右:self.tra(root.right)
  • 中:令root的值为它本身加上pre,更新pre为当前root的值;
  • 左:self.tra(root.left)
class Solution(object):
    def tra(self,root):
        if root==None:
            return
        self.tra(root.right)
        root.val=root.val+self.pre
        self.pre=root.val
        self.tra(root.left)
    def convertBST(self, root):
        self.pre=0
        self.tra(root)
        return root

注意:

定义pre变量时,使用self来定义,即定义全局变量pre。

标签:pre,return,val,--,self,随想录,tra,二叉树,root
From: https://blog.csdn.net/weixin_56989647/article/details/142377180

相关文章

  • C++20 模块化(Modules)
    C++20引入的模块化(Modules)是一个重大改进,旨在取代传统的头文件机制,提高编译速度、代码可维护性以及项目的可扩展性。模块化为C++提供了一种更现代化的代码组织方式,避免了头文件中常见的宏污染、重复编译和复杂的依赖管理问题。概念与背景在C++20之前,C++项目是通过头文......
  • Ubuntu20.04分区方案
    Ubuntu20.04的分区方案可以按照以下建议进行:一、常见分区方案 -EFI系统分区(逻辑分区):   -文件系统类型:无特定提及(通常为FAT32等适用于UEFI引导的格式)   -空间大小:4G(4096MB),这个容量足够用于UEFI引导,其作用和boot引导分区类似,但在UEFI引导下使用,默认grub引导......
  • 代码随想录 -- 二叉树 -- 将有序数组转换为二叉搜索树
    108.将有序数组转换为二叉搜索树-力扣(LeetCode)思路:(注意题目要求是平衡二叉树!!!)递归出口:当传入数组为空时,返回空。单层递归逻辑:找到数组中间的值,令其为root,数组左边为root的左子树,数组右边为root的右子树。最后返回root。classSolution(object):defsortedArrayTo......
  • base64
    importjava.nio.charset.StandardCharsets;importjava.util.Base64;publicclassBase64Example{publicstaticvoidmain(String[]args){StringoriginalString="oa:123456";//使用Base64编码器Base64.Encoderenc......
  • AJAX请求的步骤解析与优化方法
    ajax的请求过程1、新建ajax对象:    IE6不兼容newXMLHttpRequest();    IE6下,ajax对象的兼容方法:        window判断的方法:            varxhr=null;            if(window.XMLHttpRequest){    xhr=newXMLHttpReq......
  • VUE省市区三级联动组件
    :::color5核心搜索<fontstyle="background-color:rgb(250,250,250);">fullCityCode</font>即可:::使用<a-col:span="12"><a-form-model-itemlabel="省市区"prop="fullCityCodeArr">......
  • VS(visual studio) C++ 封装dll,以及其隐式调用与显式调用(静态\动态)
    DLL介绍DLL(动态链接库,DynamicLinkLibrary)是一种可执行文件,它包含可以在其他程序中调用的函数和数据。他是Windows操作系统中的一个重要概念,用于代码共享和模块化。特点代码共享:多个程序可以同时使用同一个DLL文件,而不需要将其代码编译到每个程序中。这样可以节省磁盘空间和......
  • 代码随想录 -- 二叉树 -- 修剪二叉搜索树
     669.修剪二叉搜索树-力扣(LeetCode)思路:递归出口:当root为空时,返回空。当root的值比low小时,如果root没有右子树,直接返回空;否则返回trimBST(root.right,low,high)。当root的值比high大时,如果root没有左子树,直接返回空;否则返回trimBST(root.left,low,high)。单层递归逻辑:......
  • 批处理实现电脑微信多开
    话不多说了,电脑想多开几个微信,拿来做别的用处,直接上批处理脚本了,test.bat,记得把原来的微信给关掉了,然后再点击批处理程序,就可以多开微信了@echooffstart"""C:\ProgramFiles(x86)\TenCEnt\WeChat\WeChat.exe"start"""C:\ProgramFiles(x86)\Tencent\WeChat\WeChat.exe"ex......
  • NOIP 2016 普及组初赛试题及解析(第三部分:阅读程序(1-2))
    ......