千家信息网

Java中如何把二叉搜索树转换为累加树

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Java中如何把二叉搜索树转换为累加树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、题目给出二叉搜索树的根节点,
千家信息网最后更新 2026年11月03日Java中如何把二叉搜索树转换为累加树

这篇文章主要介绍了Java中如何把二叉搜索树转换为累加树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、题目

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

提醒一下,二叉搜索树满足下列约束条件:
节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。

二、题解

观察示例图发现,树的遍历顺序为右,中,左的顺序,每个节点的值,是按照这个顺序累加的状态

由于是需要累加,所以需要pre指针记录当前遍历节点cur的前一个节点,方便累加

(1)确定递归函数及返回值

题目需要遍历整棵树,同时需要定义一个全局变量 pre,用来保存 cur节点的前一个节点的数值

(2)确定递归终止条件

遇到空就终止

(3)确定单层递归的逻辑

遍历的顺序,右,中,左

三、代码

class Solution {    // 记录前驱节点    int pre = 0;    public TreeNode convertBST(TreeNode root) {        // 空节点终止        if (root == null) {            return root;        }        // 遍历顺序:右,中,左        convertBST(root.right);        root.val += pre;        pre = root.val;        convertBST(root.left);        return root;    }}

感谢你能够认真阅读完这篇文章,希望小编分享的"Java中如何把二叉搜索树转换为累加树"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

节点 搜索 顺序 篇文章 子树 递归 同时 条件 题目 相同 之和 代码 价值 全局 兴趣 函数 前驱 单层 变量 指针 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 广东万易互联网科技有限公司惠州分公司 涨乐互联网科技 互联网 科技公司 互联网金融与金融科技 远信互联网科技 易通互联网络科技有限公司 互联网科技公司介绍 广西拼得多互联网科技有限公司 互联网科技产品 互联网教育科技公司vipkid 深圳育鹏互联网科技有限公司招聘 恒生互联网科技业指数调整周期 半导体行业属于互联网高科技类吗 济南小医互联网科技有限公司招聘 互联网科技接地气 北京军民互联网科技公司 银川新华互联网科技学校招聘 山东亿川互联网科技有限责任公司 武汉亿视互联网科技有限公司 互联网科技有限公司图片 互联网医疗科技 兼蜜互联网科技 互联网科技公司有哪些 互联网实体化科技化 来此购互联网科技有限公司 宝灵互联网科技有限公司 中和天地互联网科技有限公司 互联网第三次科技革命特征 互联网公司高科技产品
0