文章目录

  • 题目描述
  • 思路 & 代码
    • 更新版

题目描述

  • 注意是二叉搜索树,可以找出顺序
  • 有点类似中序遍历

思路 & 代码

  • 思路:当前结点 root 带着父值一直走到最右边,再一个个累加右值
  • 更新 root.val += rightSum,然后以 root.val 作为左子树的父值,递归这个过程
  • 左子树递归结束,当前 root 的栈帧返回左子树的值(毕竟这边才是最大值嘛)
  • 时间复杂度O(n),相当于遍历每一个结点
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode convertBST(TreeNode root) {toConvertBST(root, 0);return root;}// 返回给父结点的赋值(当前已更新子树最左值)int toConvertBST(TreeNode root, int paNum){// 往右走,一直走到结束,返回父值if(root == null){return paNum;}// 先把父值传到最右边int rightSum = toConvertBST(root.right, paNum);// 当前值等于 当前 + 右子树的最左值root.val += rightSum; // 把当前和当作父值,传给左结点int leftSum = toConvertBST(root.left, root.val);// 返回左值return leftSum;}
}

更新版

  • 一段时间过去后,写出了更加简单的代码呢!
  • 思路还是:右 - 根 - 左,递归
class Solution {int preNum = 0;public TreeNode convertBST(TreeNode root) {if(root != null) {convertBST(root.right);root.val += preNum;preNum = root.val;convertBST(root.left);}return root;}
}

【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归)相关推荐

  1. 538. 把二叉搜索树转换为累加树(java)

    538. 把二叉搜索树转换为累加树 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的 ...

  2. [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树

    [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树 1.题目 题目链接 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree) ...

  3. Leetcode 538. 把二叉搜索树转换为累加树 C++

    Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...

  4. LeetCode 538. 把二叉搜索树转换为累加树 | Python

    538. 把二叉搜索树转换为累加树 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/convert-bst-to-greater-tree 题目 给 ...

  5. LeetCode系列538—把二叉搜索树转换为累加树

    题意 538. 把二叉搜索树转换为累加树 题解 方法一:反序中序遍历 class Solution {private:int sum = 0; public:TreeNode* convertBST( ...

  6. leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树

    力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣​leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...

  7. LeetCode 力扣 538. 把二叉搜索树转换为累加树 convertBstToGreaterTree538树

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 538. 把二叉搜索树转换为累 ...

  8. 力扣538.把二叉搜索树转换为累加树

    题目来源: 538.把二叉搜索树转换为累加树 题目: 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中 ...

  9. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

  10. leetcode 538:把二叉树搜索树转换为累加树

    leetcode 538:把二叉树搜索树转换为累加树 538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使 ...

最新文章

  1. maven私有库搭建
  2. 当今世界最受人们重视的十大经典算法
  3. 指针数组 数组指针 函数指针 指针函数
  4. 利用ajax.dll进行Ajax的开发2007-07-15 15:38
  5. 微信小程序 setData动态设置数组中的数据
  6. C# 之 HttpResponse 类
  7. Codeforces Round #598 (Div. 3) E. Yet Another Division Into Teams dp + 输出方案
  8. nandflash与文件系统,oob区数据扫盲。后面还会补充实际生产烧录的心得体验,依据不同的文件系统
  9. raid5 合适 多少块硬盘_raid1 raid2 raid5 raid6 raid10如何选择使用?各需要几块硬盘?...
  10. IOS 定时器 NSTimer
  11. 基于gulp编写的一个简单实用的前端开发环境
  12. Android 系统(89)---ART
  13. AppBuilder(二)UseStageMarker
  14. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  15. c语言小程序:打文字游戏【图形库graphics.h】
  16. 趣味CSS3(一)--旋转的大风车
  17. AD16 绘制简单电路原理图的基本步骤(适合小白)
  18. 华为云数据库VS自建数据库,上“云”不是智商税
  19. NCRE——网络工程师——操作系统
  20. perspective 3D 效果和动画配合

热门文章

  1. Leetcode--424. 替换后的最长重复字符
  2. 自研芯片鸿蒙系统,华为智慧屏:自研智慧芯片鸿蒙系统 9月发布
  3. java7 uri,细数Java8中那些让人纵享丝滑的文件操作
  4. python for循环连续输入五个成绩判断等级_Python条件循环判断
  5. 基于Keras的卷积神经网络用于猫狗分类(进行了数据增强)+卷积层可视化
  6. Smarty模板技术学习(二)
  7. Replace Array with Object(以对象取代数组)
  8. 一个经典的WIN32窗口应用
  9. STM32与宇电设备实现AI-BUS通讯
  10. React Native使用指南-使用链接库