538.把二叉搜索树转换为累加树
给定一个二叉搜索树(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.把二叉搜索树转换为累加树相关推荐
- [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树 1.题目 题目链接 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree) ...
- leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树
力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...
- Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...
- Leetcode 538. 把二叉搜索树转换为累加树 C++
Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...
- LeetCode 538. 把二叉搜索树转换为累加树 | Python
538. 把二叉搜索树转换为累加树 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/convert-bst-to-greater-tree 题目 给 ...
- LeetCode 力扣 538. 把二叉搜索树转换为累加树 convertBstToGreaterTree538树
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 538. 把二叉搜索树转换为累 ...
- 538. 把二叉搜索树转换为累加树(java)
538. 把二叉搜索树转换为累加树 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的 ...
- 力扣538.把二叉搜索树转换为累加树
题目来源: 538.把二叉搜索树转换为累加树 题目: 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中 ...
- LeetCode系列538—把二叉搜索树转换为累加树
题意 538. 把二叉搜索树转换为累加树 题解 方法一:反序中序遍历 class Solution {private:int sum = 0; public:TreeNode* convertBST( ...
- leetcode 538. 把二叉搜索树转换为累加树 思考分析
题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和. 提醒一 ...
最新文章
- 人体姿态跟踪--Pose Flow: Efficient Online Pose Tracking
- js中的失误导致的奇怪事
- GDAL算法进度条使用说明
- 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构
- 克隆可序列化和不可序列化的Java对象
- android studio导入eclipse项目各种问题,Android | 导入Eclipse项目到Android studio的问题解决全过程...
- android 机顶盒 页面布局,Android机顶盒用户DIY手册.doc
- 数据分析 | 这个新职业年薪高达49w,作为普通打工人的你眼馋了吗?
- Eclipse运行tomcat失败
- C# 线程知识--异步编程模型(APM)
- Unfolder使用教程:如何插入,删除和更新对象
- mfc c++string、char与char*之间的关系
- java练习题库_大一java题库练习题.doc
- c语言 分数通分,如何用C语言,实现简单的分数化简
- 看得更近,监督得更好:通过基于组件的鉴别器一次性生成字体
- 北京市区最大天然冰场今开放
- 在bpfTrace中使用USDT
- 辽大考研复试的一点心得体会
- nodejs+express+Vue 古诗词在线学习网站
- 基于java的信访项目_基于web系统的信访设计与开发.doc