当前位置: 首页 > news >正文

面试算法54:所有大于或等于节点的值之和

题目

给定一棵二叉搜索树,请将它的每个节点的值替换成树中大于或等于该节点值的所有节点值之和。假设二叉搜索树中节点的值唯一。例如,输入如图8.10(a)所示的二叉搜索树,由于有两个节点的值大于或等于6(即节点6和节点7),因此值为6节点的值替换成13,其他节点的值的替换过程与此类似,所有节点的值替换之后的结果如图8.10(b)所示。
在这里插入图片描述

分析

如果能够按照节点值从大到小按顺序遍历二叉搜索树,那么只需要遍历一次就够了,因为遍历到一个节点之前值大于该节点的值的所有节点已经遍历过。通常的中序遍历是先遍历左子树,再遍历根节点,最后遍历右子树,由于左子树节点的值较小,右子树节点的值较大,因此总体上就是按照节点的值从小到大遍历的。如果要按照节点的值从大到小遍历,那么只需要改变中序遍历的顺序,先遍历右子树,再遍历根节点,最后遍历左子树,这样遍历的顺序就颠倒过来了。

public class Test {public static void main(String[] args) {TreeNode node1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node5 = new TreeNode(5);TreeNode node6 = new TreeNode(6);TreeNode node7 = new TreeNode(7);node4.left = node2;node4.right = node6;node2.left = node1;node2.right = node3;node6.left = node5;node6.right = node7;TreeNode result = convertBST(node4);System.out.println(result);}public static TreeNode convertBST(TreeNode root) {Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;int sum = 0;while (cur != null || !stack.isEmpty()) {while (cur != null) {stack.push(cur);cur = cur.right;}cur = stack.pop();sum += cur.val;cur.val = sum;cur = cur.left;}return root;}
}
http://www.lryc.cn/news/218789.html

相关文章:

  • 七月论文审稿GPT第二版:从Meta Nougat、GPT4审稿到LongLora版LLaMA、Mistral
  • PyTorch入门学习(十二):神经网络-搭建小实战和Sequential的使用
  • Linux shell编程学习笔记20:case ... esac、continue 和break语句
  • 树莓派4无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)
  • 花草世界生存技能
  • 执行npm install时老是安装不成功node-sass的原因和解决方案
  • 【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证
  • 「Verilog学习笔记」四选一多路器
  • asp.net 创建docker容器
  • Linux项目自动化构建工具-make/Makefile使用
  • 【React】03.脚手架的进阶应用
  • WPF开源控件HandyControl——零基础教程
  • chinese-stable-diffusion中文场景文生图prompt测评集合
  • K-均值聚类算法
  • Xbox漫游指南
  • 降低毕业论文写作压力的终极指南
  • SELECT COUNT( * ) 与SELECT COUNT( 1 ) 区别
  • [python 刷题] 1248 Count Number of Nice Subarrays
  • 堆叠注入 [GYCTF2020]Blacklist1
  • 算法:Java构建二叉树并递归实现二叉树的前序、中序、后序遍历
  • 既然有了字节流,为什么还要有字符流?
  • 3+单细胞+代谢+WGCNA+机器学习
  • 音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法
  • (论文阅读15/100)You Only Look Once: Unified, Real-Time Object Detection
  • init进程启动过程
  • 全网最详细的【shell脚本的入门】
  • CH10_简化条件逻辑
  • nn.LayerNorm解释
  • Springboot搭建微服务案例之Eureka注册中心
  • 【MySQL】用户管理权限控制