二叉树DFS

基础知识

二叉树遍历

二叉树遍历
二叉树遍历

二叉搜索树BST

二叉搜索树BST

二叉树三种深度遍历

LeetCode 94. 二叉树的中序遍历

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();inorder(root, ans);return ans;}public void inorder(TreeNode root, List<Integer> ans) {if ( root == null )return;inorder(root.left, ans);ans.add(root.val);inorder(root.right, ans);}
}

LeetCode 144. 二叉树的前序遍历

class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();preorder(root, ans);return ans;}public void preorder(TreeNode root, List<Integer> ans) {if ( root == null )return;ans.add(root.val);preorder(root.left, ans);preorder(root.right, ans);}
}

LeetCode 145. 二叉树的后序遍历

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();postorder(root, ans);return ans;}public void postorder(TreeNode root, List<Integer> ans) {if ( root == null )return;postorder(root.left, ans);postorder(root.right, ans);ans.add(root.val);}
}

从深度遍历序列还原二叉树

LeetCode 105. 从前序与中序遍历序列构造二叉树

105-左右子树
105-左子树
105-右子树

class Solution {// 通过哈希表把中序遍历序列中的值和顺序建立映射关系private Map<Integer, Integer> indexMap;public TreeNode buildTree(int[] preorder, int[] inorder) {int n = inorder.length;// 构造哈希映射,以中序序列中的元素值 inorder[i] 作为 key,以位置 i 作为 value,存放到哈希表中indexMap = new HashMap<Integer, Integer>();for (int i=0; i<n; i++) {indexMap.put(inorder[i],i);}return help(preorder, inorder, 0, n-1, 0, n-1);}public TreeNode help(int[] preorder, int[] inorder, int preorder_left, int preorder_right, int inorder_left, int inorder_right) {if (preorder_left > preorder_right)return null;// 前序遍历中的第一个节点就是根节点int preorder_root = preorder_left;// 在中序遍历中定位根节点int inorder_root = indexMap.get(preorder[preorder_root]);// 构建根节点TreeNode root =  new TreeNode(preorder[preorder_root]);// 左子树中的节点数目int size_left_subtree = inorder_root - inorder_left;// 递归地构造左子树,并连接到根节点// 先序遍历中「从 左边界+1 开始的 size_left_subtree」个元素就对应了中序遍历中「从 左边界 开始到 根节点定位-1」的元素root.left = help(preorder, inorder, preorder_left+1, preorder_left+size_left_subtree, inorder_left, inorder_root-1);// 递归地构造右子树,并连接到根节点// 先序遍历中「从 左边界+1+左子树节点数目 开始到 右边界」的元素就对应了中序遍历中「从 根节点定位+1 到 右边界」的元素root.right = help(preorder, inorder, preorder_left+size_left_subtree+1, preorder_right, inorder_root+1, inorder_right);return root;}}

LeetCode 106. 从中序与后序遍历序列构造二叉树

class Solution {// 通过哈希表把中序遍历序列中的值和顺序建立映射关系private Map<Integer, Integer> indexMap;public TreeNode buildTree(int[] inorder, int[] postorder) {int n = inorder.length;// 构造哈希映射,以中序序列中的元素值 inorder[i] 作为 key,以位置 i 作为 value,存放到哈希表中indexMap = new HashMap<Integer, Integer>();for (int i=0; i<n; i++) {indexMap.put(inorder[i],i);}return help(inorder, postorder, 0, n-1, 0, n-1);}public TreeNode help(int[] inorder, int[] postorder, int inorder_left, int inorder_right, int postorder_left, int postorder_right) {if (inorder_left > inorder_right)return null;// 后序遍历中的最后一个节点就是根节点int postorder_root = postorder_right;// 在中序遍历中定位根节点int inorder_root = indexMap.get(postorder[postorder_root]);// 构建根节点TreeNode root =  new TreeNode(postorder[postorder_root]);// 左子树中的节点数目int size_left_subtree = inorder_root - inorder_left;// 递归地构造左子树,并连接到根节点root.left = help(inorder, postorder, inorder_left,inorder_root-1, postorder_left, postorder_left+size_left_subtree-1);// 递归地构造右子树,并连接到根节点root.right = help(inorder, postorder, inorder_root+1, inorder_right, postorder_left+size_left_subtree, postorder_right-1);return root;}
}

二叉搜索树BST

LeetCode 700. 二叉搜索树中的搜索

class Solution {public TreeNode searchBST(TreeNode root, int val) {if (root == null)return  null;if (root.val == val)return root;else if ( root.val < val )return searchBST(root.right, val);elsereturn searchBST(root.left, val);}
}

LeetCode 701. 二叉搜索树中的插入操作

class Solution {public TreeNode insertIntoBST(TreeNode root, int val) {if (root == null)return new TreeNode(val);if(val < root.val)root.left = insertIntoBST(root.left, val);elseroot.right = insertIntoBST(root.right, val);return root;}
}

LeetCode 98. 验证二叉搜索树

class Solution {public boolean isValidBST(TreeNode root) {return check(root, Long.MIN_VALUE, Long.MAX_VALUE);}public boolean check(TreeNode root, long rangeLeft, long rangeRight) {if (root == null)return true;if (root.val<=rangeLeft || root.val>=rangeRight)return false;return check(root.left, rangeLeft, root.val) && check(root.right, root.val, rangeRight);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pod的控制器

Pod的控制器是什么&#xff1f; pod控制器&#xff1a;工作负载均衡。workload。用于管理pod的中间层。确保pod资源符合预期的状态。 预期状态&#xff1a; 副本数 容器的重启策略 镜像拉取策略 pod出现故障时的重启等等 Pod控制器的类型 1、 replicaSet&#xff1a;指…

NLP论文阅读记录 - WOS | 2023 TxLASM:一种新颖的与语言无关的文本文档摘要模型

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.文献综述及相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 TxLASM: A novel language agnostic summarization mo…

用了这8个 Python 数据挖掘工具包,生产力明显得到了提升!

在进行数据科学时&#xff0c;可能会浪费大量时间编码并等待计算机运行某些东西。所以我选择了一些 Python 库&#xff0c;可以帮助你节省宝贵的时间。 喜欢记得收藏、关注、点赞&#xff0c;文末送技术交流和资料 1、Optuna Optuna 是一个开源的超参数优化框架&#xff0c;…

ArkTS中自定义组件

ArkTS中自定义组件 一、组件位置二、Hello.ets自定义组件自定义组件 三、Second.ets父组件 一、组件位置 一个项目下所有的自定义的组件名不可以重复&#xff0c;无论是否在一个ets文件中 二、Hello.ets自定义组件 自定义组件 1&#xff1a;组件必须使用Component装饰 2&#…

IIC学习之SHT30温湿度传感器(基于STM32)

简介 附上SHT30资料和逻辑分析仪源文件&#xff0c;点击下载 关于IIC的介绍网上已经非常详尽&#xff0c;这里只说重点&#xff1a; 双线&#xff08;SDA&#xff0c;SCL&#xff09;&#xff0c;半双工采用主从结构&#xff0c;支持一主多从&#xff0c;通过地址寻址&#…

USB转串口芯片 国产GP232RL 低成本兼容替代FT232RL 数据手册资料参考

随着工业物联网的不断发展&#xff0c;USB接口正在逐渐替代老式电脑的各种低俗外围接口&#xff0c;然而目前的工业环境中&#xff0c;许多重要的设备仍然使用RS232、RS422、RS485接口界面设计&#xff0c;因此许多用户使用USB转RS232、RS422、RS485转换器或者是转换线&#xf…

Overmind平台推出Sui任务,帮助开发者学习Move并构建强大的应用程序

Overmind与Sui基金会合作&#xff0c;推出了其首个任务系列&#xff0c;旨在帮助开发者学习Move并开始在Sui上构建。这些任务通过提供赢取奖励的机会来将学习体验变成游戏&#xff0c;激励开发者构建高质量的代码并向Sui社区展示他们的技能。 去年推出的Overmind平台正在扩展到…

Leetcode20-唯一摩尔斯密码词(804)

1、题目 国际摩尔斯密码定义一种标准编码方式&#xff0c;将每个字母对应于一个由一系列点和短线组成的字符串&#xff0c; 比如: ‘a’ 对应 “.-” &#xff0c; ‘b’ 对应 “-…” &#xff0c; ‘c’ 对应 “-.-.” &#xff0c;以此类推。 为了方便&#xff0c;所有 26…

new mars3d.graphic.PolylineEntity({在固定高度开启编辑模式的坐标自定义处理

功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 问题场景&#xff1a; 1.在编辑航线时&#xff0c;需要指定航线坐标在固定高度值上开启编辑模式。 2.关键代码是&#xff1a; graphicLayer.startEditing({开启编辑模式&#xff0c;进行航线的编辑。 解决方案&#xf…

大模型实战营Day4 XTuner 大模型单卡低成本微调实战 作业

按照文档操作&#xff1a; 单卡跑完训练&#xff1a; 按照要求更改微调的数据&#xff1a; 完成微调数据的脚本生成&#xff1a; 修改配置文件&#xff1a; 替换好文件后启动&#xff1a; 启动后终端如图&#xff1a; 用于微调的一些数据显示&#xff1a; 训练时间&#x…

muduo网络库剖析——套接字Socket类

muduo网络库剖析——套接字Socket类 前情从muduo到my_muduo 概要socket网络编程socket编程接口介绍头文件socketbindlistenacceptaccept4connect 框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多…

数字孪生+人工智能突破复杂地形和气候提供可靠的电力

利用 Bentley 应用程序实现数字化交付&#xff0c;大大缩短了项目时间和成本&#xff0c;降低了碳排放量 Kalpataru Projects International Limited (KPIL) 正在扩展喀麦隆的电力网络&#xff0c;以改善该国 13% 人口的电网连接和电力供应。根据其项目管理方法&#xff0c;KPI…

Oracle 实战手册 工作实战经验总结

一、基本的数据库管理 高级开发人员需要掌握&#xff0c;了解Oracle数据库运行的基本原理&#xff0c;了解其中的概念。 1、数据库的启动和关闭 2、如何确定Oracle的版本&#xff1f; SQL> select * from v$version 2 / BANNER -------------------------------------…

电动工具直流调速专用集成电路GS069,具有电源电压范围宽、功耗小、抗干扰能力强等特性

GS069电动工具直流调速电路是CMOS专用集成电路&#xff0c;具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络&#xff0c;改变与之相接 的VMOS 管的输出&#xff0c;达到控制电动工具转速的作用。该电路输出幅值宽&#xff0c; 频率变化小&#xff0c;占空比…

【微信小程序独立开发1】项目提出和框架搭建

前言&#xff1a;之前学习小程序开发时仿照别人的页面自己做了一个商城项目和小说项目&#xff0c;最近突发奇想&#xff0c;想从0开发一个关于《宠物日记》的小程序&#xff0c;需求和页面都由自己设计&#xff0c;将在这记录开发的全部流程和过程中遇到的难题等... 1、搭建小…

怎样通过交换机封锁MAC地址

第一步&#xff1a;查询该IP所对应的MAC地址 display arp | include ip地址 第二步&#xff1a;封锁mac地址 mac-address blackhole mac地址 vlan 所属vlan-id 以上操作即可封锁

怎么采集今日头条的资讯或文章-简数采集器

如何使用简数采集器快速采集今日头条新闻的资讯或优质文章&#xff1f; 很遗憾&#xff0c;简数采集器暂时不支持采集今日头条上的新闻和文章&#xff0c;不建议采集。 可以换一个采集源进行采集。 简数采集器采集网页文章非常简单&#xff0c;只需输入对应的网址&#xff0…

MySQL 删除ibdata1时怎么恢复

标题&#xff1a;MySQL InnoDB数据恢复&#xff0c;丢失ibdata1时怎么安全恢复 废话在前&#xff1a; 恭喜你&#xff0c;当你看到这篇文章的时候&#xff0c;说明有可能 你心里已经有一万匹&#x1f40e;在奔腾了。千万不要乱删除ibdata1&#xff0c;有些博客无脑抓取、复制…

方案解决:5G基站节能及数字化管理

截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5G基站的能耗成为…

腾讯云把向量数据库“卷”到哪一步了?

“不是我不明白&#xff0c;这世界变化快”&#xff0c;崔健在20世纪写下的这句歌词&#xff0c;放在刚刚过去的2023年&#xff0c;也同样适用。技术风向的变化之快&#xff0c;让不少人感到惊讶&#xff0c;向量数据库这一年的潮起潮落&#xff0c;就是一个典型的例子。 2023年…