package com.day19;
class Tree {
public class Node {
private Object value; //数据域
private Node lift;//左子列
private Node right;//右子列
}
private Node root;//根节点
private int size;//节点长度
public void add(Object val) {//添加数据
Node newNode = new Node();
newNode.value = val;
if (root == null) {//第一次添加
root = newNode;//根引用指向新节点
} else {
insert(root, newNode);//根节点,新节点
}
size++;
}
private void insert(Node node, Node newNode) {
if (((Comparable) newNode.value).compareTo(node.value) < 0) {//新节点和目标节点进行比大小如果返回值小于0 说明这个新节点小于目标节点 数据往左走
if (node.lift == null) {//如果目标的左是空的
node.lift = newNode;//父节点的lift直接指向新节点
} else {
insert(node.lift, 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.lift);//递归调用
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();
}
}
Java(TreeTest)
最新推荐文章于 2024-11-14 14:48:14 发布