在JAVA中实现二叉树结构

 最近研究了一下二叉树结构,参考了一些资料,总结了一下。

package com.test;

/**
 * 
 * 在JAVA中实现二叉树结构
 * 
 * 讲解:
 * 二个方法函数,一个寻找关键字--searchkey 另一个是插入一个结点:insertTree 
 * 
 * 另外这是一个完全的先序遍历二叉树的语法。先根结点,再左结点,如无再右结点,如些加归至
 * 
 * 搜索完毕。
 * 
 
*/

public class BinaryTreeTest {
 
 
private BinaryTree root = null;

 
public BinaryTreeTest() {
  init();
 }


 
/**
  * 初始化给定数据的二叉树结构
  *
  
*/

 
private void init() {

  
int data[] = 1211344567385643228 };
  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); //到二叉树中查找

 }

}


 输出结果:

二叉树的中的数据结构:
------------------------------------
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

 

从结果中可以清晰的看到数组放到二叉树结构中的过程,这样对二叉树的结构就容易理解了。

查找时对应这个结构也比较清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值