1038. 从二叉搜索树到更大和树 --力扣 --JAVA

简介: 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。提醒一下, 二叉搜索树 满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。

 题目

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

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

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

    解题思路

      1. 由题意可知需要先获取右子树的值累加再赋值给当前节点,因此使用递归;
      2. 创建全局变量用来存储累加后的值;
      3. 右子树是先递归再赋值,左子树需要先赋值再递归,因为左子树的值小于当前节点。

      代码展示

      class Solution {
          private int sum = 0;
          public TreeNode bstToGst(TreeNode root) {
              if(root == null){
                  return null;
              }
              bstToGst(root.right);
              sum += root.val;
              //左子树节点的值小于根节点,所以当存在左子树是需要先赋值再递归
              if(root.left != null){
                  root.val = sum;
                  bstToGst(root.left);
              } else {
                  root.val = sum;
              }
              return root;
          }
      }

      image.gif


      目录
      相关文章
      |
      6天前
      |
      算法 Java
      [Java·算法·简单] LeetCode 27. 移除元素 详细解读
      [Java·算法·简单] LeetCode 27. 移除元素 详细解读
      27 1
      |
      6天前
      |
      算法 Java C语言
      C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
      C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
      |
      6天前
      |
      算法 Java
      [Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
      [Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
      25 0
      |
      6天前
      |
      算法 Java
      [Java·算法·简单] LeetCode 392. 判断子序列 详细解读
      [Java·算法·简单] LeetCode 392. 判断子序列 详细解读
      42 0
      |
      6天前
      |
      Java
      Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
      Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
      13 4
      |
      6天前
      leetcode代码记录(不同的二叉搜索树
      leetcode代码记录(不同的二叉搜索树
      8 0
      |
      6天前
      |
      算法 C++
      【刷题】Leetcode 1609.奇偶树
      这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
      9 0
      |
      6天前
      |
      SQL Java 关系型数据库
      java 递归返回树形组织结构(附带树形菜单的搜索)
      java 递归返回树形组织结构(附带树形菜单的搜索)
      19 0
      |
      6天前
      |
      存储 人工智能 Java
      Java 构建树型结构
      Java 构建树型结构
      |
      6天前
      |
      算法 API DataX
      二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
      二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”

      热门文章

      最新文章