[javaSE] 数据结构(二叉树-遍历与查找)
前序遍历:中,左,右
中序遍历:左,中,右
后序遍历:左,右,中
二叉树查找
从根节点进行比较,目标比根节点小,指针移动到左边
从根节点进行比较,目标比根节点大,指针移动到右边
/**
* 前序遍历
* @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] 数据结构(二叉树-遍历与查找)的更多相关文章
- javascript数据结构与算法--二叉树遍历(后序)
javascript数据结构与算法--二叉树遍历(后序) 后序遍历先访问叶子节点,从左子树到右子树,再到根节点. /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * * */ ...
- javascript数据结构与算法--二叉树遍历(先序)
javascript数据结构与算法--二叉树遍历(先序) 先序遍历先访问根节点, 然后以同样方式访问左子树和右子树 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...
- javascript数据结构与算法--二叉树遍历(中序)
javascript数据结构与算法--二叉树遍历(中序) 中序遍历按照节点上的键值,以升序访问BST上的所有节点 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...
- jS生成二叉树,二叉树的遍历,查找以及插入
js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } ...
- java数据结构之二叉树遍历的非递归实现
算法概述递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍历算法.非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似.对 ...
- python 下的数据结构与算法---7:查找
一:线性查找(Sequential Search) 线性查找可以说是我们用的最早也会是用的最多的查找方式了.其对应的是线性数据结构,回顾一下线性数据结构,其特点是先后加入的元素是有顺序的,相邻的.而线 ...
- 二叉树——遍历篇(递归/非递归,C++)
二叉树--遍历篇 二叉树很多算法题都与其遍历相关,笔者经过大量学习.思考,整理总结写下二叉树的遍历篇,涵盖递归和非递归实现. 1.二叉树数据结构及访问函数 #include <stdio.h&g ...
- 算法与数据结构(十) 二叉排序树的查找、插入与删除(Swift版)
在上一篇博客中,我们主要介绍了四种查找的方法,包括顺序查找.折半查找.插入查找以及Fibonacci查找.上面这几种查找方式都是基于线性表的查找方式,今天博客中我们来介绍一下基于二叉树结构的查找,也就 ...
- 二叉树遍历(flist)(已知中序和按层遍历,求先序 )
问题 F: 二叉树遍历(flist) 时间限制: 1 Sec 内存限制: 128 MB提交: 11 解决: 9[提交][状态][讨论版][命题人:quanxing][Edit] [TestData ...
随机推荐
- GO语言官方中文教程!
官方中文教程网址:https://tour.go-zh.org/basics/1 推荐理由:简洁,一句废话没有,对于初学者可以让大家快速掌握GO语言! 注意问题:如果不能访问,你懂的! 教程截图:
- java学习笔记—JDBC1(16)
1.数据持久化 l 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用,也称为“固化”.在大多数情况下,服务器或客户端应用中数据的持久化是通过关系型数据库来实现 l 存储 ...
- 深入了解java虚拟机(JVM) 第九章 class文件结构及意义
Class文件是访问jvm的重要指令,学习了class文件能够更加深入的了解jvm的工作过程.本文只进行概况总结,要进行更加详细的学习class文件,可以参考:https://blog.csdn.ne ...
- 【ocp-12c】最新Oracle OCP-071考试题库(43题)
43.(9-2)choose three Which three tasks can be performed by DDL statements? A) preventing data retrie ...
- robot framework学习笔记之二———变量
Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...
- css 做幻灯片效果
设置一个div 盒子 <div class="ani"></div> 设置css 样式 .ani{ width:480px; height:320px; ...
- python基础知识梳理----6set 集合的应用
集合内容简介: set 一: 集合简介 集合set集合是python的一个基本数据类型.一般不是很常用set.中的元素是不重复的.无序的.里里面的元素必须是可hash的tuple,bool),str, ...
- php pdo prepare真的安全吗
详见 这里 Let's say I have code like this: $dbh = new PDO("blahblah"); $stmt = $dbh->prepar ...
- 解决无法运行Terminator出现以下问题: File "/usr/bin/terminator"...SyntaxError: invalid syntax
在安装或者启动Terminator时可能出现这个问题: lin@Dev:~$ terminator File "/usr/bin/terminator", line 123 exc ...
- C#-WebForm-Javascript、Jquery获取浏览器和屏幕各种高度宽度
Javascript: IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度d ...