前言
使用java简单的实现一个二叉树,不平衡的排序树;
//树
class Tree{
//内部节点类
private class Node{
private String value;
private Node left;
private Node right;
}
private Node root;//根节点
private int size; //节点数
public void add(String Val) {
Node newNode = new Node();
newNode.value = Val;
if(root == null) {
root = newNode;
}else {
insert(root, newNode);//二叉排序树每次插入新数据都需要从根节点开始
}
}
//插入
private void insert(Node node, Node newNode) {
if(((Comparable)newNode.value).compareTo(node.value) < 0) {
if(node.left == null) {
node.left = newNode;
} else {
insert(node.left, newNode);//左指针不为空,继续将左节点当作左子树的根节点递归
}
} else if(((Comparable)newNode.value).compareTo(node.value) > 0){
if(node.right == null) {
node.right = newNode;
} else {
insert(node.right, newNode);//右指针不为空,继续将右节点当作右子树的根节点,递归
}
}
}
//遍历
public void travel() {
access(root);//从根节点开始遍历,对于二叉排序树,要有序输出,是按照【 左 中 右】 的顺序遍历,整个过程递归
}
private void access(Node node) {
if(node == null) {
return;
}//递归结束的条件
access(node.left);
System.out.println(node.value);
access(node.right);
}
}
public class TreeTest {
public static void main(String[] args) {
Tree tree = new Tree();
tree.add("yy");
tree.add("cc");
tree.add("dd");
tree.add("aa");
tree.add("ee");
tree.add("f1");
tree.add("f2");
tree.add("f3");
tree.add("f4");
tree.add("f5");
tree.travel();
}
}