package com.heda.code;
public class Node2 {
private int value;
private Node2 left;
private Node2 right;
/**
* 向双向链表中添加一个值
* @param value
*/
public void add(int value){
if(this.value==value){
this.value=value;
}else if(value>this.value){
if(right==null){
right=new Node2();
}
right.setValue(value);
}else if(value<this.value){
if(left==null){
left=new Node2();
}
left.setValue(value);
}
}
/**
* 在链表中查找某个值
* @param value
* @return
*/
public boolean find(int value){
if(this.value==value){
return true;
}else if(value>this.value){
if(right!=null){
return right.find(value);
}
}else if(value<this.value){
if(left!=null){
return left.find(value);
}
}
return false;
}
public void prePrint() {
System.out.print(this.value + ",");
if (left != null)
left.prePrint();
if (right != null)
right.prePrint();
}
public void middleList() {
if (left != null)
left.prePrint();
System.out.print(this.value + ",");
if (right != null)
right.prePrint();
}
public void afterList() {
if (left != null)
left.prePrint();
if (right != null)
right.prePrint();
System.out.print(this.value + ",");
}
public static void main(String[] args){
int[] data = new int[20];
for (int i = 0; i < data.length; i++) {
data[i] = (int) (Math.random() * 100) + 1;
System.out.print(data[i] + ",");
}
System.out.println();
Node root = new Node();
root.value = data[0];
for (int i = 1; i < data.length; i++) {
root.store(data[i]);
}
root.find(data[19]);
root.preList();
System.out.println();
root.middleList();
System.out.println();
root.afterList();
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}