用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

------------------------------------

  找到了:80b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值