把二叉搜索树转换为累加树—leetcode538
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
例如:
输入: 原始二叉搜索树:
5
/ \
2 13
输出: 转换为累加树:
18
/ \
20 13
思路1:没有看清题意是二叉搜索树,尴尬,算了~先贴上没有考虑搜索树的笨方法把,先把数节点的值都拿出来,然后遍历树的节点,求比当前节点值大的数值和
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> treeVal;TreeNode* convertBST(TreeNode* root) {if(root==NULL)return NULL;extractVal(root);int n = treeVal.size();resetVal(root,n);return root;}void resetVal(TreeNode* root,int n){if(root==NULL)return;resetVal(root->left,n);int sum = root->val;for(int i=0;i<n;++i){sum+=(treeVal[i]>root->val?treeVal[i]:0);}root->val = sum;resetVal(root->right,n);}void extractVal(TreeNode* root){if(root==NULL)return;extractVal(root->left);treeVal.push_back(root->val);extractVal(root->right);}
};
思路二:反序中序遍历,即先遍历右子树,再根节点,后左节点,这样充分利用二叉搜索树特性,遍历又大往小,一路求和即可
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int sum = 0;TreeNode* convertBST(TreeNode* root) {if(root==NULL)return NULL;convertBST(root->right);sum += root->val;root->val = sum;convertBST(root->left);return root;}
};
把二叉搜索树转换为累加树—leetcode538相关推荐
- 【数据结构与算法】之深入解析“把二叉搜索树转换为累加树”和“从二叉搜索树到更大和树”的求解思路与算法示例
一.题目要求 ① 把二叉搜索树转换为累加树 给出二叉搜索树的根节点,该树的节点值各不相同,请将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 no ...
- [二叉树遍历|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 的新值等于原树中 ...
最新文章
- centos6上以二进制方式安装mariadb5.5
- Apache服务器和tomcat服务器有什么区别?
- 企业网站建设量身定做的三项基本要素
- centos c++ 找不到头文件mysql.h
- 快速了解和使用Photon Server
- BugKuCTF 加密 ok
- 心得 如何优雅地跨线程修改主线程窗口控件
- IIS7 设置 UrlRewrite
- python 中主线程结束 子线程还在运行么_「干货」python线程笔记
- 高薪、稀缺人才必备哪些技能?BDTC大会告诉你,附最新议程!
- 一张图11招学会Python网络黑客
- android studio链接海马玩模拟器
- 计算机中sumif函数的使用方法,WPS表格的sumif函数用法与模糊条件使用方法
- 蚂蚁金服是不是中国最好的 FinTech(金融科技)公司
- android设备内部添加apn信息
- esc键退出全屏 vue_vue项目实现全屏,退出全屏,图标切换的解决方案
- 移动磁盘显示无法访问设备未就绪,里面的资料如何找到
- Laravel本地Sail开发环境下Phpstorm+浏览器+Postman调试配置
- 一生的读书计划——影响中国历史进程的中国名人
- mysql分布式主键_技术分享 | 优化 InnoDB 的主键