本文主要介绍如何在Java中把二叉查找树转换成一个积累树,具有一定的参考价值。有兴趣的朋友可以参考一下。希望大家看完这篇文章后收获多多。让边肖带你去了解一下。
00-1010给出了二叉查找树的根节点,它有不同的节点值。请将其转换为更大和树,以便每个节点的新值等于原始树中大于或等于node.val的值之和。
请注意,二叉查找树满足以下限制:
节点的左子树仅包含键小于节点键的节点。
节点的右子树只包含键大于节点键的节点。
左右子树也必须是二分搜索法树。
从10: 00到10: 00,观察示例图,发现树的遍历顺序是右、中、左,每个节点的值都是按照这个顺序累加的。
因为需要累加,所以需要前置指针记录当前遍历节点cur的前一个节点,方便累加。
(1)确定递归函数及返回值
主题需要遍历整个树,同时需要定义一个全局变量pre来保存cur节点的前一个节点的值。
(2)确定递归终止条件
空时终止。
(3)确定单层递归的逻辑
遍历顺序,右,中,左。
一、题目
类别解决方案{
//记录前置节点。
int pre=0;
publicturenodecovertbst(treenoderroot){ 0
//空节点终止。
if(root==null){ 0
returnroot
}
//遍历顺序:右、中、左。
convert BST(root . right);
root.val=pre
pre=root.val
convert BST(root . left);
returnroot
}
}感谢您仔细阅读本文。希望边肖分享的文章《如何将二叉查找树转化为Java中的累积树》对大家有所帮助。也希望大家多多支持和关注行业信息渠道,更多相关知识等着你去学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/65908.html