前序遍历:中,左,右

中序遍历:左,中,右

后序遍历:左,右,中

二叉树查找

从根节点进行比较,目标比根节点小,指针移动到左边

从根节点进行比较,目标比根节点大,指针移动到右边

    /**
* 前序遍历
* @param tree
*/
public void preOrder(BSTree tree){
preOrder(tree.mRoot);
}
public void preOrder(BSTNode node){
if(node!=null){
System.out.print(node.key+"");
preOrder(node.left);
preOrder(node.right);
}
}
/**
* 中序遍历
* @param tree
*/
public void midOrder(BSTree tree){
midOrder(tree.mRoot);
}
public void midOrder(BSTNode node){
if(node!=null){
midOrder(node.left);
System.out.print(node.key+"");
midOrder(node.right);
}
}
/**
* 后序遍历
* @param tree
*/
public void postOrder(BSTree tree){
postOrder(tree.mRoot);
}
public void postOrder(BSTNode node){
if(node!=null){
postOrder(node.left);
postOrder(node.right);
System.out.print(node.key+"");
}
}
/**
* 二叉树的查找
* @param tree
* @param key
* @return
*/
public BSTNode<T> search(BSTree<T> tree,T key){
BSTNode<T> mRoot=tree.mRoot;
while(mRoot!=null){
int flag=key.compareTo(mRoot.key);
if(flag<0){
mRoot=mRoot.left;
}else if(flag>0){
mRoot=mRoot.right;
}else{
return mRoot;
}
}
return mRoot;
}

        tree.preOrder(tree);//输出 312546
tree.midOrder(tree);//输出 123456
tree.postOrder(tree);//输出 214653
BSTree.BSTNode node=tree.search(tree, 5);
System.out.println(node.left.key);//输出 4

[javaSE] 数据结构(二叉树-遍历与查找)的更多相关文章

  1. javascript数据结构与算法--二叉树遍历(后序)

    javascript数据结构与算法--二叉树遍历(后序) 后序遍历先访问叶子节点,从左子树到右子树,再到根节点. /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * * */ ...

  2. javascript数据结构与算法--二叉树遍历(先序)

    javascript数据结构与算法--二叉树遍历(先序) 先序遍历先访问根节点, 然后以同样方式访问左子树和右子树 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...

  3. javascript数据结构与算法--二叉树遍历(中序)

    javascript数据结构与算法--二叉树遍历(中序) 中序遍历按照节点上的键值,以升序访问BST上的所有节点 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...

  4. jS生成二叉树,二叉树的遍历,查找以及插入

    js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } ...

  5. java数据结构之二叉树遍历的非递归实现

    算法概述递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍历算法.非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似.对 ...

  6. python 下的数据结构与算法---7:查找

    一:线性查找(Sequential Search) 线性查找可以说是我们用的最早也会是用的最多的查找方式了.其对应的是线性数据结构,回顾一下线性数据结构,其特点是先后加入的元素是有顺序的,相邻的.而线 ...

  7. 二叉树——遍历篇(递归/非递归,C++)

    二叉树--遍历篇 二叉树很多算法题都与其遍历相关,笔者经过大量学习.思考,整理总结写下二叉树的遍历篇,涵盖递归和非递归实现. 1.二叉树数据结构及访问函数 #include <stdio.h&g ...

  8. 算法与数据结构(十) 二叉排序树的查找、插入与删除(Swift版)

    在上一篇博客中,我们主要介绍了四种查找的方法,包括顺序查找.折半查找.插入查找以及Fibonacci查找.上面这几种查找方式都是基于线性表的查找方式,今天博客中我们来介绍一下基于二叉树结构的查找,也就 ...

  9. 二叉树遍历(flist)(已知中序和按层遍历,求先序 )

    问题 F: 二叉树遍历(flist) 时间限制: 1 Sec  内存限制: 128 MB提交: 11  解决: 9[提交][状态][讨论版][命题人:quanxing][Edit] [TestData ...

随机推荐

  1. http协议与https协议的区别

    1.前言 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可 ...

  2. php函数源代码 C编写 【持续更新】

    由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 strlen() 获取字符串长度,成功则返回字符串 string 的长度 ...

  3. java学习笔记—Tomcat(9)

    1 目录结构 bin  二进制目录,主要存储的是一些启动和停止服务器的命令startup.bat conf  配置目录,server.xml web.xml lib  服务器软件使用的第三方的j ...

  4. leecode刷题(18)-- 报数

    leecode刷题(18)-- 报数 报数 描述: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 1112 ...

  5. spring指导的index.html在spring文件夹中的位置

  6. 代码审计之Catfish CMS v4.5.7后台作者权限越权两枚+存储型XSS一枚

    首先本地搭建环境,我所使用的是Windows PHPstudy集成环境.使用起来非常方便.特别是审计的时候.可以任意切换PHP版本. 本文作者:226safe Team – Poacher 0×01 ...

  7. Linux命令行测试网速speedtest.net

    Linux命令行测试网速speedtest.net 当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带 ...

  8. scrapy入门例子

    使用爬取http://quotes.toscrape.com/内容,网站内容很简单 一. 使用scrapy创建项目 scrapy startproject myscrapy1 scrapy gensp ...

  9. ArrayList 和 Vector 的区别

    这两个类都实现了 List 接口( List 接口继承了 Collection 接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取 ...

  10. HEOI 十二省联考退役记

    Day -1 简要的说了些注意事项 一整天都在刷树套树的水题 退役的感觉近了 Day 0 早上收拾好东西去了火车站之后 火车站居然还没有开门 等了半天 我们是从衡水到德州再到秦皇岛 到了德州之后 去车 ...