节点类
/**
*
*/
package ch10;
/**
* @author lixin
* @date 2018年7月27日
* @Description 二叉树节点类,为方便访问把访问权限设置成public
*/
public class Node {
//数据域
public long data;
//左节点
public Node leftNode;
//右节点
public Node rightNode;
public Node(long value) {
this.data = value;
}
}
二叉树类
/**
*
*/
package ch10;
/**
* @author lixin
* @date 2018年7月27日
* @Description 二叉树实现类
*/
public class Tree {
// 树根节点
public Node root;
// 插入节点
public void insert(long value) {
Node node = new Node(value);
Node current = root;
Node parent;
// 判断一下是不是第一次插入
if (current == null) {
root = node;
} else {
while (true) {
// 记录上一个节点的引用
parent = current;
if (current.data > value) {
current = current.leftNode;
if (current == null) {
parent.leftNode = node;
return;
}
} else {
current = current.rightNode;
if (current == null) {
parent.rightNode = node;
return;
}
}
}
}
}
public Node find(long value) {
Node current = root;
while(true){
if(current.data!=value){
if(current.data>value){
current=current.leftNode;
if(current==null){
return null;
}
}else{
current=current.rightNode;
if(current==null){
return null;
}
}
}else{
return current;
}
}
}
//
public static void main(String[] args) {
Tree tree = new Tree();
tree.insert(1);
tree.insert(2);
tree.insert(3);
tree.insert(4);
// 测试插入节点
System.out.println(tree.root.data);
System.out.println(tree.root.rightNode.data);
System.out.println(tree.root.rightNode.rightNode.data);
// 查找节点
System.out.println(tree.find(2).data);
}
}