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

算法题目学习汇总

1、二叉树前中后序遍历:https://blog.csdn.net/cm15835106905/article/details/124699173
2、输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

public class Solution {private TreeNode prev = null; // 用于记录链表的前一个节点private TreeNode head = null; // 头节点public TreeNode convertToDoublyLinkedList(TreeNode root) {if (root == null) {return null;}inOrderConvert(root);return head;}private void inOrderConvert(TreeNode node) {if (node == null) {return;}// 递归遍历左子树inOrderConvert(node.left);// 将当前节点链接到前一个节点if (prev == null) {// 当前节点是最左节点,赋值为头节点head = node;} else {// 将前一个节点的right指向当前节点prev.right = node;// 当前节点的left指向前一个节点node.left = prev;}// 更新前一个节点为当前节点prev = node;// 递归遍历右子树inOrderConvert(node.right);}public static void main(String[] args) {TreeNode root = new TreeNode(10);root.left = new TreeNode(6);root.right = new TreeNode(14);root.left.left = new TreeNode(4);root.left.right = new TreeNode(8);root.right.left = new TreeNode(12);root.right.right = new TreeNode(16);Solution solution = new Solution();TreeNode head = solution.convertToDoublyLinkedList(root);// 打印双向链表while (head != null) {System.out.print(head.val + " ");head = head.right;}}
}

解释:
变量定义:
prev 用于记录当前节点的前一个节点。
head 用于记录转换后的双向链表的头节点。
中序遍历: 使用递归的方式遍历二叉搜索树。对于每个节点:

递归遍历左子树。
处理当前节点,将 prev 节点的 right 指针指向当前节点,当前节点的 left 指针指向 prev 节点。
更新 prev 节点为当前节点。
递归遍历右子树。
输出双向链表:

转换完成后,我们可以遍历链表进行输出,验证结果是否正确。

3、二叉树深度在这里插入图片描述
在这里插入图片描述
4、

http://www.lryc.cn/news/369078.html

相关文章:

  • DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射)
  • 吊车报警的工作原理和使用场景_鼎跃安全
  • Spring5
  • vue面试题二
  • 软件设计师笔记-程序语言基础知识
  • 在Windows上安装VMWare Pro 16.2(虚拟机)并从零安装CentOS 7.6镜像过程记录
  • NGINX之location和rewrite
  • Python数据框的合并(一) -- merge函数
  • 【Qt秘籍】[010]-Qt常用控件
  • TypeScript基础教程学习
  • JavaSE面试
  • 安全漏洞扫描工具
  • 前端开发部署:Visual Studio Code + vue
  • 基于Sentry+OpenTelemetry实现微服务前后端全链路监控
  • jquery.datetimepicker无法添加清除按钮的问题
  • Qt中解决编译中文乱码和编译失败的问题
  • Android状态栏适配问题
  • 如何为色盲适配图形用户界面
  • 【爬虫实战项目一】Python爬取豆瓣电影榜单数据
  • AI-知识库搭建(一)腾讯云向量数据库使用
  • AI数据分析:根据Excel表格数据绘制柱形图
  • 基于协调过滤算法商品推荐系统的设计
  • CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”
  • 大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路
  • 在知识的海洋中航行:问题的演变与智慧的追求
  • splice()、slice()、split()三种方法的区别
  • iOS 之homebrew ruby cocoapods 安装
  • 【栈】2751. 机器人碰撞
  • 贪心算法06(leetcode738,968)
  • cve_2022_0543-redis沙盒漏洞复现 vulfocus