以二叉树的形式存储数据
定义一个BinaryTree的泛型类,这个类只有一个属性root记录总根节点,提供唯一的方法添加数据到root,如果不是添加到root就调用子树的addElement方法。
package com.dy.dateStructure.test;
public class BinaryTree {
private ChildTree root;
public void addNode(Comparable data) {
ChildTree childTree = new ChildTree(data);
if(root == null) {
root = childTree;
}else {
root.addElement(data);
}
}
}
定义一个子树类ChildTree,提供三个属性root记录子树的根节点,还有这个节点对应的左边树和右边树。
先和根节点做判断。
如果小于根节点,再判断根节点是否为空,如果为空则给左子树添加。不为空,已左子树为对象再调用方法addElement,
如果大于根节点,再判断根节点是否为空,如果为空则给右子树添加。不为空,已左子树为对象再调用方法addElement,
package com.dy.dateStructure.test;
public class ChildTree {
private Comparable root;
private ChildTree left;
private ChildTree right;
public ChildTree(Comparable root) {
super();
this.root = root;
}
public void addElement(Comparable data) {
ChildTree childTree = new ChildTree(data);
if(data.compareTo((T) this.root)<0 ) {
if(this.left == null) {
this.left = childTree;
}else {
this.left.addElement(data);
}
}else {
if(this.right == null) {
this.right= childTree;
}else {
this.right.addElement(data);
}
}
}
public ChildTree getLeft() {
return left;
}
public void setLeft(ChildTree left) {
this.left = left;
}
public ChildTree getRight() {
return right;
}
public void setRight(ChildTree right) {
this.right = right;
}
}
测试方法
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
binaryTree.addNode(4);
binaryTree.addNode(1);
binaryTree.addNode(3);
binaryTree.addNode(5);
//binaryTree.addNode(1);
}
执行流程
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYhVmY5UWYhFDMlVWN3ETO5MmZzYzM1EDO5QDNidDO58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
原文:https://www.cnblogs.com/zhougongjin/p/11124957.html