数据算法之二叉树查找(BinaryTreeL Search)的Java实现
本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
二叉树查找的基本思想是在二叉查找树中从根节点开始,如果大于根节点则继续比较右孩子,如果小于则继续查找左孩子,依次往复。
如图所示
输入:待查元素ele
输出:对应元素在二叉查找树中的结点位置
代码:
public Node search(Object ele){return binTSearchRe (root, ele);
}
private Node binTSearchRe(BinTreeNode rt, Object ele){if (rt==null) return null;switch(strategy.compare(ele,rt.getData())){case 0: return rt; //等于case -1: return binTSearchRe(rt.getLChild(),ele); //小于default: return binTSearchRe(rt.getRChild(),ele); //大于}
}
输入:待查元素ele
输出:对应元素在二叉查找树中的结点位置
代码:
public Node search(Object ele){return binTSearchRe (root, ele);
}
private Node binTSearchRe(BinTreeNode rt, Object ele){if (rt==null) return null;switch(strategy.compare(ele,rt.getData())){case 0: return rt; //等于case -1: return binTSearchRe(rt.getLChild(),ele); //小于default: return binTSearchRe(rt.getRChild(),ele); //大于}
}
输入:根结点v
输出:在v 为根的二叉查找树中最小元素的位置
代码:
public Node min(BinTreeNode v){if (v!=null)while (v.hasLChild()) v = v.getLChild();return v;
}
输入:根结点v
输出:在v 为根的二叉查找树中最大元素的位置
代码:
public Node max(BinTreeNode v){if (v!=null)while (v.hasRChild()) v = v.getRChild();return v;
}
输入:根结点v
输出:返回v 在中序遍历序列中的后续结点
代码:
private BinTreeNode getSuccessor (BinTreeNode v){if (v==null) return null;if (v.hasRChild()) return (BinTreeNode)min(v.getRChild());while (v.isRChild()) v = v.getParent();return v.getParent();
}
输入:根结点v
输出:返回v 在中序遍历序列中的前驱结点
代码:
private BinTreeNode getPredecessor(BinTreeNode v){if (v==null) return null;if (v.hasLChild()) return (BinTreeNode)max(v.getLChild());while (v.isLChild()) v = v.getParent();return v.getParent();
}
数据算法之二叉树查找(BinaryTreeL Search)的Java实现相关推荐
- 数据算法之二叉树删除(BinaryTreeL Remove)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树删除要分为三种情况. ...
- 数据算法之二叉树插入(BinaryTreeL Insert)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树插入的基本思想是从根 ...
- 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树平衡的基本思想是通过 ...
- 数据算法之折半查找(binSearch)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 折半查找的基本思想是在有序 ...
- 算法----打印二叉树最右侧的节点 Java版
思路: 首先进行层序遍历,拿到每一层的节点,然后打印每一层的最后一个节点即可. 代码: package com.xinyu.test;import java.util.*;public class T ...
- python 查找算法_七大查找算法(Python)
查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由同一类型的数据元素构成的集合 关键字(Ke ...
- 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)
1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...
- 经典算法之折半查找法
活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...
- 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历
# -*- coding: utf-8 -*- # author: zhonghua # filename: search_binarytree.py # create: 2016/3/29 # ve ...
最新文章
- 高倍数泡沫装置PHP_平衡式泡沫比例混合装置 PHP - 压力式比例混合装置 - 武汉鑫澳龙消防设备有限公司...
- 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
- 邀请函|2021 云原生实战峰会,邀请您免费现场参会报名
- mysql 服务器 kill进程_mysql查询结束进程kill
- java.lang包—StringBuffer类和StringBuilder类
- P4245 【模板】任意模数多项式乘法(NTT)
- 深入浅出看懂AlphaGo Zero - PaperWeekly 第51期
- 为什么越普通的男人越自信?
- 4. HTML DOM Event 对象
- Python学习之路 第3次笔记!
- 百度之星 度度熊的午饭时光
- matlab中IGBT是什么,igbt的matlab仿真
- c语言房屋中介管理系统代码,房屋中介管理系统简易源代码
- 蓝桥杯 青少年创意编程大赛 scratch 组、中国电子学会scratch等级考试等
- 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
- 高数 08.02 可分离变量微分方程
- 除权除息,前复权,后复权,不复权
- igraph入门教程
- 疯了!一个rm-rf把公司整个数据库删没了...
- 银河麒麟下安装ftp服务
热门文章
- egg extend ts_电竞5.21日王者荣耀KPL分析:DYG冲击西部榜首,TS战队能否虐菜?
- 使用Python操作PowerPoint文件中的表格
- 详解Python中的浅复制与深复制
- 基于java的机房收费系统_基于Java Socket的高校机房计费管理系统
- JSP环境搭建和入门
- 车仪表台上的装饰_给车“纹身”贴这些的注意,有人挨罚啦!扣不扣分?!看这里...
- 小杜机器人线下店_阿里线下卖车已成事实,阿里造车还会远吗?
- python字符串操作_Python 字符串操作 - 树懒学堂
- verilog异步复位jk触发器_异步复位同步释放原理
- python 在软件自己自动输入-Python模拟百度自动输入搜索功能的实例