package yn.ngems.cn;
import java.util.Arrays;
public class JavaDemo {
public static void main(String[] args) {
BinaryTree<Person> tree = new BinaryTree<Person>();
tree.add(new Person("aaa-50",50));
tree.add(new Person("aaa-20",20));
tree.add(new Person("aaa-30",30));
tree.add(new Person("aaa-100",100));
tree.add(new Person("aaa-80",80));
tree.add(new Person("aaa-60",60));
// System.out.println(Arrays.toString(tree.toArray()));
System.out.println(tree.contains(new Person("aaa-50",40)));
}
}
class BinaryTree<T extends Comparable<T>>{
private class Node{
private Comparable<T> data;
private Node parent;
private Node left;
private Node right;
public Node(Comparable<T> data) {
this.data = data;
}
public void addNode(Node newNode) {
if(newNode.data.compareTo((T)this.data) <= 0) {
if(this.left != null) {
this.left.addNode(newNode);
}else {
this.left = newNode;
newNode.parent = this;
}
}else if(newNode.data.compareTo((T)this.data) > 0) {
if(this.right != null) {
this.right.addNode(newNode);
}else {
this.right = newNode;
newNode.parent = this;
}
}
}
public void toArrayNode() {
if(this.left != null) {
this.left.toArrayNode();
}
BinaryTree.this.returnData[BinaryTree.this.foot ++] = this.data;
if(this.right != null) {
this.right.toArrayNode();
}
}
public boolean containsNode(Comparable<T> data) {
if(data.compareTo((T)this.data) == 0){
return true;
}else if(data.compareTo((T)this.data) < 0) {
if(this.left != null) {
return this.left.containsNode(data);
}else {
return false;
}
}else {
if(this.right != null) {
return this.right.containsNode(data);
}else {
return false;
}
}
}
}
private Node root;
private int count = 0;
private Object [] returnData;
private int foot = 0;
public void add(Comparable<T> data) {
if(data == null) {
throw new NullPointerException("不允许保存空数据!");
}
Node newNode = new Node(data);
if(this.root == null) {
this.root = newNode;
}else {
this.root.addNode(newNode);
}
this.count ++;
}
public boolean contains(Comparable<T> data) {
if(this.count == 0) {
return false;
}
return this.root.containsNode(data);
}
public Object [] toArray() {
if(this.count == 0) {
return null;
}
this.returnData = new Object[this.count];
this.foot = 0;
this.root.toArrayNode();
return this.returnData;
}
}
class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name,int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "【Person信息】姓名:" + this.name + "、年龄" + this.age + "\n";
}
@Override
public int compareTo(Person per) {
return this.age - per.age;
}
}
二叉树简单查询
猜你喜欢
转载自blog.csdn.net/qq_27347147/article/details/85011763
今日推荐
周排行