在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中实现的二叉树结构相关推荐

  1. java设计一个user类_关于JAVA设计一个用户类

    关于JAVA设计一个用户类 关注:152  答案:2  mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...

  2. java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税

    用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金  提 ...

  3. java设计一个bank类实现银行_java定义一个类实现银行账户的概念。

    2016-11-17 13:40黄瞩信 客户经理 比如,只定义了一个抽象方法run(),而要通过系统用极短的时间.这5s内,此后这个线程就不能进入其它状态,进入消亡状态;+i++). 2,另一方面;, ...

  4. 【Java入门学习】JAVA设计一个雇员类,创建雇员类对象

    题目:设计一个雇员类,创建雇员类对象,统计雇员的出勤人数 1.属性包括:编号.姓名.年龄.职务.部门.出勤人数 2.方法包括:构造方法.输出信息的方法.签到方法 要求: 1.考虑属性和方法的访问权限 ...

  5. JAVA设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight

    编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数loader.卡车类Truck是C ...

  6. 1-6 JAVA [设计一个BankAccount类]

    设计一个BankAccount类,这个类包括: (1)一个int型的balance表时账户余额. (2)一个无参构造方法,将账户余额初始化为0. (3)一个带一个参数的构造方法,将账户余额初始化为该输 ...

  7. java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...

    [填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...

  8. java形状类_[转载]JAVA 设计一个形状类Shape 求周长和面积

    设计一个形状类Shape,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的 ...

  9. 如何用Java设计一个简单的窗口界面(学习中.1)

    如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...

  10. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用

    Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...

最新文章

  1. php导出doc文件_PHP生成Word文档的方法
  2. K-means Algorithm 聚类算法
  3. [Python人工智能] 三十.Keras深度学习构建CNN识别阿拉伯手写文字图像
  4. Xamarin组件包 Xamarin.ToolKit
  5. 【洛谷 P3304】[SDOI2013]直径(树的直径)
  6. 微信 小程序组件 焦点切换
  7. presto安装及使用 1
  8. 小朵机器人安卓叫什么_小朵机器人App
  9. Matlab实现小世界网络生成及其分析
  10. ios播放器横竖屏切换的问题
  11. python 对接萤石云,录制可播放的MP4视频
  12. C语言、Java学习笔记(三)---几种简单的排序算法
  13. 简化版的DRCNN代码(Python)
  14. Compuware 公司
  15. wss协议 c 服务器,利用LIBWEBSOCKETS写WS、WSS服务端和客户端
  16. android vector 圆形,Android中矢量图形的那些事 - SVG or Vector
  17. 调停者模式(Mediator) Java实现
  18. 联想ghost重装系统_一键ghost怎么用|一键ghost重装系统教程|一键重装系统步骤
  19. CDLinux的U盘简便安装方法
  20. 原创超简单代码(1.27)

热门文章

  1. make -C $(KDIR) M=$(PWD) modules
  2. 5-1 File Transfer
  3. win7中jar包不能安装的问题
  4. Leetcode每日一题:面试题17.12 binode
  5. 大二上学期数据结构课程设计
  6. 剑指offer (02):实现 Singleton 单例模式 (Python 实现详解)
  7. @value 静态变量_C/C++语言中的变量的4种存储类型
  8. linux uwsgi 非root,nginx – 只能用root运行uwsgi
  9. 计算机音乐深海少女,深海少女 MIDI File Download :: MidiShow
  10. html本文框百分比定位,HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点...