当前位置: 首页 > news >正文

力扣1038. 从二叉搜索树到更大和树(java,树的中序遍历解法)

Problem: 1038. 从二叉搜索树到更大和树

文章目录

  • 题目描述
  • 思路
  • 解题方法
  • 复杂度
  • Code

题目描述

给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。

提醒一下, 二叉搜索树 满足下列约束条件:

节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。

示例 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]

提示:

树中的节点数在 [1, 100] 范围内。
0 <= Node.val <= 100
树中的所有值均 不重复 。

思路

我们易得到对于一个二叉搜索树,若我们按右-根-左的顺序递归中序遍历可以的得到一个递减的节点值序列,我们再利用一个变量在的过程中将当前的节点值加到变量中再将当前节点值修改为当前的变量值。

解题方法

1.记录一个成员变量sum用于记录中序遍历序列的累加值
2.按右-根-左的顺序递归中序遍历,递归结束条件为root == null
3.在归的过程中让sum加上当前节点值,再让sum赋值给当前节点值

复杂度

  • 时间复杂度:

O ( n ) O(n) O(n)

  • 空间复杂度:

O ( n ) O(n) O(n)

Code


/*** 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 {//Time Complexity: O(n)//Space Complexity: O(n)int sum = 0;public TreeNode bstToGst(TreeNode root) {resInorder(root);return root;}private void resInorder(TreeNode root) {if (root == null) return;resInorder(root.right);sum += root.val;root.val = sum;resInorder(root.left);}
}
http://www.lryc.cn/news/242058.html

相关文章:

  • 使用正则表达式来判断一个字符串只是否包含数字
  • C#Wpf关于日志的相关功能扩展
  • 亚马逊云科技AI创新应用下的托管在AWS上的数据可视化工具—— Amazon QuickSight
  • MySQL安全性:用户认证、防范SQL注入和SSL/TLS配置详解
  • EMG肌肉信号处理合集 (一)
  • 学自动化测试?我劝你还是算了吧。。。
  • 第一百七十八回 介绍一个三方包组件:SlideSwitch
  • Windows任务管理器内存性能界面各个参数含义
  • 深度学习人脸表情识别算法 - opencv python 机器视觉 计算机竞赛
  • 全职RISC-V芯片D1开发板使用adb串口COM连接设备和文件上传下载
  • STM32笔记---RTC
  • C语言之strstr函数的使用和模拟实现
  • 【间歇振荡器2片555时基仿真】2022-9-24
  • MySQL与PostgreSQL 的一些SQL
  • Spring 七大组件
  • 【UGUI】实现跑酷游戏分数血量显示在UI中
  • Vue和React对比
  • iPhone的实时照片不能直接查看,但有不少替代方法可以查看
  • 弹窗msvcp140_1.dll丢失的解决方法,超简单的方法分享
  • 人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087
  • Interactive Visual Data Analysis
  • Prometheus监控mysql nginx tomcat 黑盒监控
  • Altium Designer学习笔记12
  • csrf跨站请求伪造详解
  • GitLab的个人仓库转移到团队仓库
  • Linux:Ubuntu实现远程登陆
  • Unity中Shader的Standard材质解析(二)
  • 【Python 训练营】N_5 斐波那契数列
  • x-www-form-urlencoded的含义解释,getReader()和getParameter()的区别
  • python每日一题——3最长连续序列