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

数据结构--树与二叉树

数据结构分类

集合

线性结构(一对一)

树形结构(一对多)

图结构(多对多)

数据结构三要素

1、逻辑结构

2、数据的运算

3、存储结构(物理结构)

树的概念

树的分类

满二叉树和完全二叉树

二叉排序树

平衡二叉树

二叉树分类总结

二叉树的存储结构

顺序存储

链式存储

二叉树的遍历

先序遍历
class Node {constructor(value) {this.value = value;this.left = null;this.right = null;}}const tree = new Node('A');tree.left = new Node('B');tree.right = new Node('C');tree.left.left = new Node('D');tree.left.right = new Node('E');tree.right.left = new Node('F');tree.right.right = new Node('G');// 前序遍历const preorderTraversal = (root) => {if (root === null) return;console.log(root.value); // 访问根节点preorderTraversal(root.left); // 遍历左子树preorderTraversal(root.right); // 遍历右子树};preorderTraversal(tree);
中序遍历
class Node {constructor(value) {this.value = value;this.left = null;this.right = null;}}const tree = new Node('A');tree.left = new Node('B');tree.right = new Node('C');tree.left.left = new Node('D');tree.left.right = new Node('E');tree.right.left = new Node('F');tree.right.right = new Node('G');// 前序遍历const preorderTraversal = (root) => {if (root === null) return;preorderTraversal(root.left); // 遍历左子树console.log(root.value); // 访问根节点preorderTraversal(root.right); // 遍历右子树};preorderTraversal(tree);
后序遍历
class Node {constructor(value) {this.value = value;this.left = null;this.right = null;}}const tree = new Node('A');tree.left = new Node('B');tree.right = new Node('C');tree.left.left = new Node('D');tree.left.right = new Node('E');tree.right.left = new Node('F');tree.right.right = new Node('G');// 前序遍历const preorderTraversal = (root) => {if (root === null) return;preorderTraversal(root.left); // 遍历左子树preorderTraversal(root.right); // 遍历右子树console.log(root.value); // 访问根节点};preorderTraversal(tree);

遍历构造二叉树

        const generateTreeHelper = (node, n) => {node.left = new TreeNode(n);node.right = new TreeNode(n);n -= 1;if (n > 0) {generateTreeHelper(node.left, n);generateTreeHelper(node.right, n);}};const generateTree = (n) => {let root = null;if (n <= 0) return root;root = new TreeNode(3);generateTreeHelper(root, n - 1);return root;};console.log('--------root', generateTree(3));

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业
  • Python编码系列—Python 异步编程:asyncio 的魔法与实战
  • ArduPilot开源代码之FMU+IOMCU设计
  • Java中的中介者模式:解耦复杂系统的有效策略
  • 向上or向下调整建堆 的时间复杂度的本质区别的讲解
  • git 不跟踪某些文件的几种方式
  • Honeybee Locality-enhanced Projector for Multimodal LLM
  • 融资3亿美元——月之暗面:AI大模型领域的新星
  • erlang小白的学习之路--rebar3 升级
  • 回归评价指标
  • 数据中心网络设计方案-VXLAN+ l2vpn+OSPF
  • 【项目实战】C++视频共享点播系统
  • [ACP云计算]组件介绍
  • libcurl8.9.1 上传mp4文件
  • java基础概念17-static
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • egg(89)--egg之redis的发布和订阅
  • STAR法则
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 动态规划入门(以爬楼梯为例)
  • 规范化安全开发 KOA 手脚架
  • 前端性能优化--懒加载和预加载
  • 用Canvas画一棵二叉树
  • 云大使推广中的常见热门问题
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 阿里云重庆大学大数据训练营落地分享
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • %check_box% in rails :coditions={:has_many , :through}
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (7)svelte 教程: Props(属性)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (办公)springboot配置aop处理请求.
  • (第30天)二叉树阶段总结
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)JAVA使用POI操作excel
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Sublime Text3配置Lua运行环境
  • (转)德国人的记事本
  • .NET 4.0中的泛型协变和反变
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 依赖注入和配置系统
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET导入Excel数据