本文的代码来自于《数据结构与算法(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实现相关推荐

  1. 数据算法之二叉树删除(BinaryTreeL Remove)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树删除要分为三种情况. ...

  2. 数据算法之二叉树插入(BinaryTreeL Insert)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树插入的基本思想是从根 ...

  3. 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树平衡的基本思想是通过 ...

  4. 数据算法之折半查找(binSearch)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 折半查找的基本思想是在有序 ...

  5. 算法----打印二叉树最右侧的节点 Java版

    思路: 首先进行层序遍历,拿到每一层的节点,然后打印每一层的最后一个节点即可. 代码: package com.xinyu.test;import java.util.*;public class T ...

  6. python 查找算法_七大查找算法(Python)

    查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由同一类型的数据元素构成的集合 关键字(Ke ...

  7. 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)

    1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...

  8. 经典算法之折半查找法

    活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...

  9. 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历

    # -*- coding: utf-8 -*- # author: zhonghua # filename: search_binarytree.py # create: 2016/3/29 # ve ...

最新文章

  1. 高倍数泡沫装置PHP_平衡式泡沫比例混合装置 PHP - 压力式比例混合装置 - 武汉鑫澳龙消防设备有限公司...
  2. 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
  3. 邀请函|2021 云原生实战峰会,邀请您免费现场参会报名
  4. mysql 服务器 kill进程_mysql查询结束进程kill
  5. java.lang包—StringBuffer类和StringBuilder类
  6. P4245 【模板】任意模数多项式乘法(NTT)
  7. 深入浅出看懂AlphaGo Zero - PaperWeekly 第51期
  8. 为什么越普通的男人越自信?
  9. 4. HTML DOM Event 对象
  10. Python学习之路 第3次笔记!
  11. 百度之星 度度熊的午饭时光
  12. matlab中IGBT是什么,igbt的matlab仿真
  13. c语言房屋中介管理系统代码,房屋中介管理系统简易源代码
  14. 蓝桥杯 青少年创意编程大赛 scratch 组、中国电子学会scratch等级考试等
  15. 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
  16. 高数 08.02 可分离变量微分方程
  17. 除权除息,前复权,后复权,不复权
  18. igraph入门教程
  19. 疯了!一个rm-rf把公司整个数据库删没了...
  20. 银河麒麟下安装ftp服务

热门文章

  1. egg extend ts_电竞5.21日王者荣耀KPL分析:DYG冲击西部榜首,TS战队能否虐菜?
  2. 使用Python操作PowerPoint文件中的表格
  3. 详解Python中的浅复制与深复制
  4. 基于java的机房收费系统_基于Java Socket的高校机房计费管理系统
  5. JSP环境搭建和入门
  6. 车仪表台上的装饰_给车“纹身”贴这些的注意,有人挨罚啦!扣不扣分?!看这里...
  7. 小杜机器人线下店_阿里线下卖车已成事实,阿里造车还会远吗?
  8. python字符串操作_Python 字符串操作 - 树懒学堂
  9. verilog异步复位jk触发器_异步复位同步释放原理
  10. python 在软件自己自动输入-Python模拟百度自动输入搜索功能的实例