遍历查询二叉树结构(1)

C# 数据结构性能对决:DataTable、字典与树结构深度对比 本文对比了C#中DataTable、字典和树结构三种容器的性能差异。通过基准测试发现:字典在精确查找(O(1))和插入操作上表现最优;树结构适合有序遍历和范围查询;DataTable虽然功能丰富但性能开销最大,内存占用约是字典的2倍。建议根据场景选择:频繁主键查询用字典,有序数据用树结构,数据库交互保留DataTable。测试表明理解数据结构特性对平衡功能与性能至关重要,完整代码已开源供参考。 阅读详情

二叉树结构用java表示如下:

package javatest.suanfa.Erchashu;

public class TreeNode {

	int val;
	TreeNode leftChild;
	TreeNode rightChild;

	public TreeNode(int value) {
		this.val = value;
	}

	public int getVal() {
		return val;
	}

	public void setVal(int val) {
		this.val = val;
	}

	public TreeNode getLeftChild() {
		return leftChild;
	}

	public void setLeftChild(TreeNode leftChild) {
		this.leftChild = leftChild;
	}

	public TreeNode getRightChild() {
		return rightChild;
	}

	public void setRightChild(TreeNode rightChild) {
		this.rightChild = rightChild;
	}

	

}

遍历二叉树的方法,递归

package javatest.suanfa.Erchashu;

public class Erchashulength {

	
	
	public static int leftlength = 0;
	public static int rightlength = 0;
	public static int length = 0;
	
	public static int dept(TreeNode node){
		if(node!=null){
			length = 1;
		}
		//如果下面的节点为null,或者左右几点为null,直接返回
		if((node==null)||(node.getLeftChild()==null&&node.getRightChild()==null)){
			return  leftlength>rightlength?leftlength:rightlength;
		//遍历左侧的树结构
		}else if(node.getLeftChild()!=null&&node.getRightChild()==null){
			leftlength++;
			return dept(node.getLeftChild());
			//遍历右侧的树结构
		}else if(node.getLeftChild()==null&&node.getRightChild()!=null){
			rightlength++;
			return dept(node.getRightChild());
			//如果2侧都有树
		}else{
			 rightlength++;
			 leftlength++;
			 dept(node.getLeftChild());
			 dept(node.getRightChild());
			return leftlength>rightlength?leftlength:rightlength;
		}
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeNode node = new TreeNode(1);
		TreeNode node21 = new TreeNode(21);
		TreeNode node22 = new TreeNode(22);
		TreeNode node31 = new TreeNode(31);
		TreeNode node32 = new TreeNode(32);
		TreeNode node33 = new TreeNode(33);
		node.setLeftChild(node21);
		node.setRightChild(node22);
		node21.setLeftChild(node31);
		node21.setRightChild(node32);
		node22.setRightChild(node33);
		dept(node);
		System.out.println(length+"----------"+leftlength+"--"+rightlength);
		System.out.println(length+leftlength);

	}

}




PHP实现无限级分类的2种方法——父值与左右值1 一、引言 存储及实现无限级分类有两种常用实现方法:     1、 毗邻目录模式(adjacency list model)     2、 预排序遍历树算法(modified preorder tree traversal algorithm) 二、模型 这里我用一个简单食品目录作为我们的示例数据。 我们的数据结构是这样的,以下是代码: Food | 阅读详情

相关推荐

ArcGIS-裁剪遥感影像及dem图像

6、选择【工具箱】-【数据管理工具】-【栅格】-【裁剪】。在【输入栅格】里选择要裁剪的dem,在【输出范围】里选择刚创建的裁剪范围。选择一个输出路径,其他参数保存默认。2、起一个名称,要素类型选择【面】。点击【编辑】选择与要裁剪的dem一致的地理坐标系。1、创建需要裁剪区域的面层shp,右击选择【新建】-【shapefile】3、点击编辑器,选择开始编辑。4、选择【裁剪范围】,点击确定。5、画出想要裁剪的范围并保存。

siwenaiyou的博客 1万+

【数据结构】二叉查找树(BST)

二叉查找树(Binary Search Tree,BST),又叫做二叉排序树、二叉搜索树,是一种对查找和排序都有用的特殊二叉树。二叉查找树的特性:左子树

m0_46628950的博客 8174

深入解析:如何基于开源OpENer开发EtherNet/IP从站服务

通过OpENer开源库,开发者可以快速实现符合ODVA规范的EtherNet/IP从站设备,降低开发成本并提高系统灵活性。本文详细介绍了EtherNet/IP协议原理、OpENer库的特点与优缺点,以及二次开发的完整流程。通过遵循本文提供的指南,开发者可以成功构建出工业级的EtherNet/IP通信设备。

极地星辰 2998

二叉查询树

Java二叉查询树(Binary Search Tree), 二叉树的遍历(前序遍历、中序遍历、后续遍历、层序遍历)

齐光的博客 808

全网最详细 解决戴维南定理的详细推导

替代定理,戴维南定理详细证明

m0_52555753的博客 3万+

<工控><PLC>汇川Easy521系列PLC与汇川SV630N伺服进行EtherCat通讯的相关配置及指令编写

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 2万+

查找二叉树(BST)

1、查找二叉树的定义 先上图: 一棵二叉搜索树(Binary Sort Tree)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据值和指向孩子(也可能是父母)的指针。如果某个孩子结点不存在,其指针为空(NULL)。 - 查找树的左右子树各是一棵查找树 - 若查找树的左子树非空,则其左子树上的各节点值均小于根节点的值。 - 若查找树的右子...

pg的博客 9368

把 SAP 输出稳稳落到 PDF:从 SPAD 前端打印到 ABAP 程序级转换的一套方法

摘要:本文介绍了三种在SAP系统中将报表输出转为PDF文件的方法。路线A通过SPAD配置前端输出设备,结合Windows打印机设置实现用户交互式PDF保存;路线B在SP01事务码中将已有Spool请求另存为PDF,适用于补救导出;路线C通过ABAP程序自动转换Spool为PDF,适合批量处理。文章详细说明了配置步骤,并针对常见问题(如乱码、文件格式错误等)提供了排查思路。三种方案分别适用于不同场景,用户可根据实际需求选择最合适的PDF导出方式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

【算法】- 查找 - 二叉排序树

编译语言:C++编译器:VS2022 二叉排序树以在执行插入或删除的时候有不用移动元素的优点,但是二叉排序树的查找性能取决于二叉排序树的形状,所以我们需将二叉排序树调整成平衡状态也就是平衡二叉树,这也是我们下节将说明的内容。

2302_77182146的博客 821

【我的Android进阶之旅】Android自定义View实现一个游戏摇杆,来实现监听遥动的方向或者监听摇动的角度的功能

一、需求描述 去年有个需求,需要使用自定义View实现一个游戏摇杆,来识别上下左右摇动的方向。 有点类似下面这样的王者荣耀游戏摇杆的效果 二、业界已有的参考资料 在下面这篇博客介绍了如何自定义游戏摇杆 2.1 博客介绍 Android自定义摇杆 2.1.1 功能 支持自适应大小 支持2个方向、4个方向、8个方向的摇动监听 支持摇动角度获取 可选回调模式 支持可摇动区域自定义 支持摇杆自定义 支持设置图片、色值、Shape图形 2.1.2 效果图 2.1.3 设置回调方式 setCallBac

字节卷动 1409

Python爬虫实战:模拟登录B站 – 处理Cookie和加密参数

由于B站在登录过程中采用了多种安全措施,包括加密的请求参数和cookie验证,模拟登录成为一项具有挑战性的任务。首先,我们需要获取B站的登录页面,并解析出其中的CSRF令牌和其他隐藏的字段。B站的登录接口通常会包含一些动态的加密参数,我们需要在登录前通过GET请求获取这些信息。本文详细介绍了如何使用Python模拟登录B站,解决加密参数的处理、图形验证码的识别以及登录后的数据抓取。库中的加密方法加密登录请求中的密码。一旦登录成功,我们可以通过维护会话状态,抓取登录后的数据,如个人主页、评论、观看记录等。

2201_76125261的博客 1309

【二叉树进阶】搜索二叉树(递归+非递归两种版本详解)

搜索二叉树详解:递归+非递归两种版本实现,画图讲解+完整代码

m0_70980326的博客 2311

建模simulink - 手把手教你搭建xpc平台

概述xpc半实物仿真目标是个基于RTW对低端实时仿真和开发平台,可将计算机或者工控机转变为一个实时系统,不需要第三方操作系统对支持,在计算机上配置输入输入出设备就能和外部交换信息,进行硬件...

不只会拍照的程序猿 7087

常数级操作:哈希表与树结构的完美结合

例如: $$ h(k) = (a \cdot k + b) \mod p $$ 其中$p$为大素数,$a$、$b$为随机系数。要在无序数据中实现常数级操作,可以采用哈希表或混合结构。哈希表通过散列函数将键映射到存储位置,平均情况下提供O(1)的插入、删除和查找。每次哈希表更新时同步更新树结构,保持其有序性。结合哈希表和树结构的优点,使用哈希表维护快速访问,同时用树结构保持部分有序性。哈希表处理主要操作,树结构辅助范围查询或有序遍历。开放寻址法通过线性探测、二次探测寻找空槽,链地址法则在哈希槽上挂载链表。

dd3wjfHJtk的博客 271

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Codeforces - Tree and Queries

题目链接:Codeforces - Tree and Queries 子树问题,我们可以考虑dfs序。 然后发现区间之间可以O(1)更新答案,所以直接莫队即可。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long long using...

青烟绕指柔的博客 470

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

二叉搜索树中查找第k小元素的算法与实践

二叉搜索树(BST)是一种高效的数据结构,利用其左小右大的特性可以实现快速查找。中序遍历BST会得到升序序列,这是解决第k小元素问题的关键。从递归到迭代再到Morris遍历,不同解法在时间和空间复杂度上各有优劣。在实际工程中,BST广泛应用于数据库索引和排名系统,理解其遍历原理对优化查询性能至关重要。本文通过Python代码示例,详细解析了如何利用中序遍历特性高效解决BST第k小元素问题,并比较了递归、迭代和Morris三种实现方式的性能差异。

weixin_30701575的博客 404

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

关系型数据库树型结构非递归思路=哈希表

IdentityTreeVo @ApiModelProperty("身份id") private Long identityId;

u010563350的博客 176

树链剖分(P3384)

树链剖分的作用 树链剖分用于解决树上区间询问,主要有两种: 给出两点,询问和修改之间的路径, 又或者给出一个点,询问和修改整颗子树的信息。 树链剖分需要配合其他数据结构如线段树等一起使用 说白了,树链剖分只是根据询问提供正确的区间 针对路径给出区间 的 复杂度为O(logN) 针对子树给出区间 的 复杂度为O(1) 如何实现? 树链剖分,顾名思义,就是把树分成链。 分为重链和...

shadiao.的博客 218

LilaS 的颜色树

树的结构保证了每个点只有一个父节点,那么可以考虑维护一个父节点路径的map,让子节点更新下去,每遍历到一个点,可以直接在父节点的map中查询路径中有没有出现相同颜色的节点。按照以上规则,有多少个好顶点。定义好顶点的规则:从顶点。的最短路径中,除了顶点。(颜色用正整数表示)。本身外,不包含与顶点。颜色相同的顶点,顶点。

2301_80281705的博客 896

E - Military Problem【DFS序列】

DFS序

R的博客 273

个人八股之集合篇---2

本文介绍了Java双列集合Map的核心知识,包括其键值对映射特性、主要实现类及应用场景。重点讲解了HashMap和TreeMap的特点及底层原理,HashMap基于哈希表实现,查询高效;TreeMap通过红黑树保持键的有序性。文章还演示了Map的多种遍历方式,并给出使用建议:HashMap适用于非线程安全场景,ConcurrentHashMap适合高并发环境。最后作者提示要注意键的hashCode实现、容量预估和并发安全,并预告下期将分享MySQL相关内容。全文为Java开发者提供了Map集合的实用指南。

2602_95151235的博客 327

php 获取商品分类数据库,数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构...

cat_id cat_name pid cat_pat类别ID(自增) 类别名称 0(父Id,若为0则是根类别,为自增ID) 路径请问各位大神,能不能给出最好的方法,直接用跟类别ID 1 查询出下面的所有子类别数据表如下:id cat_name pid ...

weixin_29534373的博客 641

【Java从入门到精通】第16篇:Map家族的实现原理——HashMap的红黑树化、TreeMap的自然排序与LinkedHashMap的插入序

Map是Java集合框架中独立于Collection体系的键值对映射结构。本文深入HashMap的哈希扰动函数、扩容的rehash开销与链表树化的阈值逻辑,对比TreeMap基于红黑树的排序约束与范围查询优势,剖析LinkedHashMap通过双向链表维护插入序与访问序的LRU实现机制。理解这三种Map实现的底层数据结构差异,是在缓存设计、排序查询和数据索引场景中做出正确选型的前提。

2301_80672009的博客 182

oracle递归查询 start with connect by prior

(1)创建表结构 -- Create table createtable TB_DW_JBXX ( dwid CHAR(10) notnull, dwmc VARCHAR2(100) notnull, tcq CHAR(2) notnull, dwlx CHAR(2) notnull, dj NUMBER(3) notnull, yxz

巴黎左岸 · 荼靡花开 501

对lca的理解总结

lca 在心中一直都是一个很水的东西,,但是

lalala 735

Oracle 循环递归遍历树结构查询

在项目中经常会接触树结构的页面; 经常会写关于查询某个树节点的所有子节点的方法,若使用java的for循环或者递归不但效率低又好性能。所以推荐使用oracle 提供的connect by prior start with  的递归查询用法。 oracle的connect by prior start with  是个双向查询树结构的功能,既可以查询子节点 ,又可以根据子节点查询上流的所有父节点;

vrenzhuv的专栏 5795
上一篇: 算法例子(快速排序和希尔排序)
下一篇: 浮点数精确位数
wangliwei4321
博客等级 码龄18年 3粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值