当前位置: 首页 > 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));

相关文章:

数据结构--树与二叉树

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构&#xff08;物理结构&#xff09; 树的概念 树的分类 满二叉树和完全二叉树 二叉排序树 平衡二叉树 二叉树分类总结 二叉树的存储结构 …...

C#项目实战经验——计时方法总结

前言 我们在开发C#程序的过程中经常需要计算某段程序执行的时间&#xff0c;比如调用的某个算法的时间&#xff0c;这时候我们就需要利用计时工具&#xff0c;本文就是详细介绍在C#中我们常用哪些计时工具。 1、计时方法—StopWatch 在C#中我们可以利用Stopwatch这个类来实现…...

电子盖章软件哪个好|盖章软件

在选择电子盖章软件时&#xff0c;需要考虑多个因素&#xff0c;包括软件的功能、安全性、易用性、兼容性以及成本等。以下是根据当前市场情况推荐的一些优秀的电子盖章软件&#xff1a; e章宝&#xff1a; 功能丰富&#xff1a;e章宝是国内领先的电子盖章系统&#xff0c;功能…...

ThreejsWebGPU运动残影demo

功能点 实例化SkinnedMesh 修改NodeMaterial着色器 节点材质系统 shader 语言 使用uniform和attribute 中合其他几篇博客中的内容 代码仓库 克隆后需要放到three源码同级别目录下 运行 three源码部分不在git仓库中(太大了) 使用vscode的live-server启动后访问 http://127.0.0.…...

HttpSession常用方法

1.HttpSession常用方法 是在Java Servlet中用来管理会话状态的重要接口&#xff0c;它提供了一种在多个请求或页面之间存储用户特定信息的方式。以下是一些 HttpSession 常用的方法和用法&#xff1a; 获取会话对象&#xff1a; HttpSession session request.getSession();…...

【JavaEE初阶】文件操作和IO

目录 &#x1f334;认识文件 &#x1f6a9;树型结构组织和目录 &#x1f6a9;文件路径&#xff08;Path&#xff09; &#x1f6a9; 文件分类 &#x1f38d;Java 中操作文件 &#x1f6a9; File 概述&#xff1a; &#x1f4cc;属性 &#x1f4cc;构造方法 &#x1f4c…...

存储器芯片的基本原理

目录 1.存储元 1.1栅极电容 1.2双稳态触发器 2.存储单元 3.存储体 4.存储器 5.容量计算 6.寻址 1.存储元 1.1栅极电容 给MOS管一个阈值电压&#xff08;5v&#xff09;就能够导电&#xff0c;若是不给那么就是一个绝缘体不会导电。 读出二进制原理&#xff1a; 通常…...

前端实习手记(7):立秋快乐

这周相比上周感觉挺好的哈哈哈&#xff0c;可能只有自己感觉蛮好的&#xff0c;旁边师父忙的飞起了要&#xff0c;不仅赶工作还要回答我乱七八糟的问题&#xff08;心疼一秒&#xff09;。这周也是立秋&七夕咯&#xff0c;立秋快乐哇家人们&#xff08;虽然还是很热嘛&…...

感恩放下,笑对人生,在人生的长河中,每一天都是独特的篇章,或顺心如意,或充满挑战

在人生的长河中,每一天都是独特的篇章,或顺心如意,或充满挑战。然而,无论今日的经历如何,我们都应怀着感恩与放下的心态,因为人生的旅程远不止这短暂的一天,明天依然充满希望,等待我们继续努力前行。 生活,犹如一场变幻莫测的舞台剧,顺心之时,我们仿佛置身于温暖的…...

URLSession之初窥门径

NSURLSession 于 2013 年随 iOS 7 的发布一起面世&#xff0c;苹果将其定位为 NSURLConnection 的替代者。我们使用最广泛的第三方框架如 AFNetworking 和 SDWebImage 的最新版也都已经全面切换至 NSURLSession。 NSURLSession 不仅仅指代同名类 NSURLSession&#xff0c;它还…...

ios创建控制器的3种方法实现页面跳转

ios遵守mvc设计模式&#xff0c;下面介绍创建控制器viewcontroller的几种方法&#xff0c;来实现页面的跳转 1.纯代码创建 // // AppDelegate.m // study2024 // // Created by zhifei zhu on 2024/8/7. //#import "AppDelegate.h" #import "MyViewContro…...

Android逆向题解-boomshakalaka-3-难度5

这个app 是一个cocos游戏&#xff0c;没有用脚本实现&#xff0c;纯c实现。 题目描述:play the game, get the highest score 题目要求是玩游戏得到最高分就可以得到flag&#xff0c;是写到配置文件的&#xff0c;初始flag值看着是base编码的。 核心代码在so里面的ControlLay…...

Linux(Ubuntu 22.04)系统中固定串口

Linux&#xff08;Ubuntu 22.04&#xff09;系统中固定串口 文章目录 前言正文查看linux串口信息修改udev固化串口校验是否修改完成 注意 前言 在Linux系统中固定串口&#xff08;通常指的是串行通信接口&#xff0c;如/dev/ttyS0或/dev/ttyUSB0&#xff09;的原因有几个方面&…...

LeetCode - 209 - 长度最小的子数组

力扣209题 题目描述&#xff1a;长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&…...

探索空间计算与VR中的手势跟踪新纪元:XHand框架详解

在虚拟现实(VR)和扩展现实(XR)技术日新月异的今天,手势跟踪作为实现沉浸式体验的关键技术之一,正逐步从概念走向成熟。今天,我们将深入探索一个创新的框架——XHand,它以其卓越的性能和先进的技术亮点,为空间计算与VR领域的手势跟踪带来了全新的解决方案。 XHand框架…...

leetcode + 项目复习

上午 Leetcode算法 参考文章——代码随想录 1. KMP 概念 主要应用 字符串匹配 主要思想 根据之前匹配的信息&#xff0c;当发现字符串不匹配时&#xff0c;避免从头开始匹配。 什么是前缀表&#xff08;next数组、prefix&#xff09; 是用来回退的&#xff0c;当文本串和…...

树莓派4/5:设置apt、pip、conda首选清华镜像源

一、教程简介 在中国大陆地区&#xff0c;使用清华镜像源可以显著缩短资源下载时间。 本教程介绍如何将清华镜像源设置为树莓派的apt、pip、conda下载的首选项&#xff08;默认项&#xff09;。其中&#xff0c;apt和pip为树莓派系统自带&#xff0c;conda则需要安装miniforg…...

NoSQL 之Redis集群模式

目录 案例概述 redis工作模式 主从模式 哨兵模式 redis cluster模式 Redis集群介绍 Redis集群的优势 Redis集群的实现方法 Redis-Cluster数据分片 Redis-Cluster的主从复制模型 Redis集群部署 案例部署 安装redis 检查redis的状态 修改配置文件 重启启动redis服…...

oracle rac

1、app连接oracle rac集群 连接到 Oracle RAC&#xff08;Real Application Clusters&#xff09;的多种配置方式 1. 使用 JDBC 连接字符串&#xff1a; 使用 JDBC 连接字符串是连接 Oracle RAC 的常见方式。连接字符串的格式如下&#xff1a; jdbc:oracle:thin:(DESCRIPTION…...

计算机毕业设计Python深度学习房价预测 房价可视化 链家爬虫 房源爬虫 房源可视化 卷积神经网络 大数据毕业设计 机器学习 人工智能 AI

Python深度学习房价预测系统开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展&#xff0c;房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策&#xff0c;还能为开发商提供市场参考&#xff0c;同时帮助购房…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...