用java设计一个二叉树类的结构,在JAVA中实现的二叉树结构
在JAVA中实现的二叉树结构
[日期:2008-12-16]
来源:IT专家网
作者:竹一
[字体:大 中 小]
*
* 讲解:
* 二个方法函数,一个寻找关键字--searchkey 另一个是插入一个结点:insertTree
* 另外这是一个完全的先序遍历二叉树的语法。先根结点,再左结点,如无再右结点,
* 如此递归至搜索完毕。
*
*/
public class BinaryTreeTest {
private BinaryTree root = null;
public BinaryTreeTest() {
init();
}
/**
* 初始化给定数据的二叉树结构
*
*/
private void init() {
int data[] = { 12, 11, 34, 45, 67, 38, 56, 43, 22, 8 };
root = new BinaryTree(data[0]);
System.out.println("二叉树的中的数据结构:");
System.out.println("------------------------------------");
System.out.println(data[0] + ":root");
for (int i = 1; i < data.length; i++) {
System.out.print(data[i] + ":");
root.insertTree(root, data[i]);
}
System.out.println("------------------------------------");
}
public void serach(int key) {
if (searchkey(root, key)) {
System.out.println("找到了:" + key);
} else {
System.out.println("没有找到:" + key);
}
}
private boolean searchkey(BinaryTree root, int key) {
if (root == null) {
return false;
} else if (root.data == key) {
return true;
} else if (key >= root.data) {
return searchkey(root.rightpoiter, key);
}
return searchkey(root.leftpoiter, key);
}
class BinaryTree {
int data;
BinaryTree leftpoiter;
BinaryTree rightpoiter;
BinaryTree(int data) {
this.data = data;
leftpoiter = null;
rightpoiter = null;
}
private void insertTree(BinaryTree root, int data) {
if (data >= root.data) {
if (root.rightpoiter == null) {
System.out.println(" -> new rightpoiter");
root.rightpoiter = new BinaryTree(data);
} else {
System.out.print(" -> rightpoiter");
insertTree(root.rightpoiter, data);
}
} else {
if (root.leftpoiter == null) {
System.out.println(" -> new leftpoiter");
root.leftpoiter = new BinaryTree(data);
} else {
System.out.print(" -> leftpoiter");
insertTree(root.leftpoiter, data);
}
}
}
}
public static void main(String args[]) {
BinaryTreeTest b = new BinaryTreeTest();
int key = 8; //key:任意数值
b.serach(key); //到二叉树中查找
}
}
运行结果:
C:\Java>java BinaryTreeTest
二叉树的中的数据结构:
------------------------------------
12:root
11: -> new leftpoiter
34: -> new rightpoiter
45: -> rightpoiter -> new rightpoiter
67: -> rightpoiter -> rightpoiter -> new rightpoiter
38: -> rightpoiter -> rightpoiter -> new leftpoiter
56: -> rightpoiter -> rightpoiter -> rightpoiter -> new leftpoiter
43: -> rightpoiter -> rightpoiter -> leftpoiter -> new rightpoiter
22: -> rightpoiter -> new leftpoiter
8: -> leftpoiter -> new leftpoiter
------------------------------------
找到了:8
用java设计一个二叉树类的结构,在JAVA中实现的二叉树结构相关推荐
- java设计一个user类_关于JAVA设计一个用户类
关于JAVA设计一个用户类 关注:152 答案:2 mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...
- java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税
用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金 提 ...
- java设计一个bank类实现银行_java定义一个类实现银行账户的概念。
2016-11-17 13:40黄瞩信 客户经理 比如,只定义了一个抽象方法run(),而要通过系统用极短的时间.这5s内,此后这个线程就不能进入其它状态,进入消亡状态;+i++). 2,另一方面;, ...
- 【Java入门学习】JAVA设计一个雇员类,创建雇员类对象
题目:设计一个雇员类,创建雇员类对象,统计雇员的出勤人数 1.属性包括:编号.姓名.年龄.职务.部门.出勤人数 2.方法包括:构造方法.输出信息的方法.签到方法 要求: 1.考虑属性和方法的访问权限 ...
- JAVA设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight
编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数loader.卡车类Truck是C ...
- 1-6 JAVA [设计一个BankAccount类]
设计一个BankAccount类,这个类包括: (1)一个int型的balance表时账户余额. (2)一个无参构造方法,将账户余额初始化为0. (3)一个带一个参数的构造方法,将账户余额初始化为该输 ...
- java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...
[填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...
- java形状类_[转载]JAVA 设计一个形状类Shape 求周长和面积
设计一个形状类Shape,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的 ...
- 如何用Java设计一个简单的窗口界面(学习中.1)
如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...
- JAVA设计一个电视机类_漫谈Java程序设计中的接口应用
Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...
最新文章
- php导出doc文件_PHP生成Word文档的方法
- K-means Algorithm 聚类算法
- [Python人工智能] 三十.Keras深度学习构建CNN识别阿拉伯手写文字图像
- Xamarin组件包 Xamarin.ToolKit
- 【洛谷 P3304】[SDOI2013]直径(树的直径)
- 微信 小程序组件 焦点切换
- presto安装及使用 1
- 小朵机器人安卓叫什么_小朵机器人App
- Matlab实现小世界网络生成及其分析
- ios播放器横竖屏切换的问题
- python 对接萤石云,录制可播放的MP4视频
- C语言、Java学习笔记(三)---几种简单的排序算法
- 简化版的DRCNN代码(Python)
- Compuware 公司
- wss协议 c 服务器,利用LIBWEBSOCKETS写WS、WSS服务端和客户端
- android vector 圆形,Android中矢量图形的那些事 - SVG or Vector
- 调停者模式(Mediator) Java实现
- 联想ghost重装系统_一键ghost怎么用|一键ghost重装系统教程|一键重装系统步骤
- CDLinux的U盘简便安装方法
- 原创超简单代码(1.27)
热门文章
- make -C $(KDIR) M=$(PWD) modules
- 5-1 File Transfer
- win7中jar包不能安装的问题
- Leetcode每日一题:面试题17.12 binode
- 大二上学期数据结构课程设计
- 剑指offer (02):实现 Singleton 单例模式 (Python 实现详解)
- @value 静态变量_C/C++语言中的变量的4种存储类型
- linux uwsgi 非root,nginx – 只能用root运行uwsgi
- 计算机音乐深海少女,深海少女 MIDI File Download :: MidiShow
- html本文框百分比定位,HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点...