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

例如:

输入: 二叉搜索树:5/   \2     13输出: 转换为累加树:18/   \20     13

使用递归:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/int sum=0;
struct TreeNode* convertBST(struct TreeNode* root){if(root==NULL)  return root;convertBST(root->right);root->val+=sum;sum=root->val;convertBST(root->left);return root;
}

可是在上述代码进行提交验证时,出现了一个小问题:

而第一个用例为:[5,2,13]  在运行完第一个用例后sum==20,所以进行第二个用例计算时,sum的初值为20。原因我猜测是:测试用例的程序在第一次测试时进行了函数外 int sum=0;的语句执行,但在后续函数测试时,直接进行了convertBST()的重复调用,没有执行函数外 int sum=0;的语句,导致sum初值发生错误;

所以,我将代码改为:

void sumBST(struct TreeNode* root,int * sum){if(root==NULL)  return root;sumBST(root->right,sum);root->val+=*sum;*sum=root->val;sumBST(root->left,sum);
}
struct TreeNode* convertBST(struct TreeNode* root){int sum=0;sumBST(root,&sum);return root;
}

在函数中调用函数,并在每次调用前对sum值赋值为0;这样在系统跑测试用例时就会每次都对sum进行初始化为0的操作。

538.把二叉搜索树转换为累加树相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. leetcode 538. 把二叉搜索树转换为累加树 思考分析

    题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和. 提醒一 ...

最新文章

  1. 人体姿态跟踪--Pose Flow: Efficient Online Pose Tracking
  2. js中的失误导致的奇怪事
  3. GDAL算法进度条使用说明
  4. 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构
  5. 克隆可序列化和不可序列化的Java对象
  6. android studio导入eclipse项目各种问题,Android | 导入Eclipse项目到Android studio的问题解决全过程...
  7. android 机顶盒 页面布局,Android机顶盒用户DIY手册.doc
  8. 数据分析 | 这个新职业年薪高达49w,作为普通打工人的你眼馋了吗?
  9. Eclipse运行tomcat失败
  10. C# 线程知识--异步编程模型(APM)
  11. Unfolder使用教程:如何插入,删除和更新对象
  12. mfc c++string、char与char*之间的关系
  13. java练习题库_大一java题库练习题.doc
  14. c语言 分数通分,如何用C语言,实现简单的分数化简
  15. 看得更近,监督得更好:通过基于组件的鉴别器一次性生成字体
  16. 北京市区最大天然冰场今开放
  17. 在bpfTrace中使用USDT
  18. 辽大考研复试的一点心得体会
  19. nodejs+express+Vue 古诗词在线学习网站
  20. 基于java的信访项目_基于web系统的信访设计与开发.doc

热门文章

  1. 1、 D435i ----- Ubuntu18.04下D435i使用(SDK安装与测试)
  2. 第2关-条件判断与条件嵌套
  3. 搞笑!中文的Java代码
  4. 【SQL基础】修改数据 —— DELETE
  5. mc服务器删除玩家信息,mc服务器删除玩家
  6. 为javaweb的页面、html添加网站图标简单代码
  7. 解决冲突的关键技巧:如何增加你的有效社交
  8. QT之神第一步———设计科目一考试登入系统界面
  9. 西安石油大学有计算机专业吗,西安石油大学计算机学院
  10. 初识 Prue MVC(基于 IOS 的文件夹创建、Storyboary 的使用及其它)