实现二叉树的添加数据,遍历输出
代码如下:
/**
* 节点
* @author Hzy
*
*/
class Node{
//左子节点
Node leftNode;
//右子节点
Node rightNode;
//中值
Object value;
/**
* 添加节点的方法
*/
public void add(Object v) {
//如果当前添加值的节点没有值,将v赋值给value
if (this.value == null) {
this.value = v;
} else {
//如果当前有值,将值经过大小判断后赋值给对应的左右节点
//赋值给左节点
if (((Integer)v) - ((Integer)this.value) <= 0) {
//判断左面有没有节点,如果没有就添加一个,然后再操作
if (null == this.leftNode) {
this.leftNode = new Node();
}
//递归调用
this.leftNode.add(v);
} else {
//判断右面有没有节点,如果没有就添加一个,然后再操作
if (null == this.rightNode) {
this.rightNode = new Node();
}
//递归调用
this.rightNode.add(v);
}
}
}
/**
* 中序遍历
*/
public List<Object> getNodes(){
//定义一个存放元素的集合
ArrayList<Object> values = new ArrayList<Object>();
//左节点的遍历结果
//如果没有左节点,就将所有的子节点装进values中
if (null != this.leftNode) {
values.addAll(this.leftNode.getNodes());
}
//当前节点的遍历
values.add(this.value);
//右节点的遍历
if (null != this.rightNode) {
values.addAll(this.rightNode.getNodes());
}
return values;
}
}
测试二叉树:
/**
* 实现二叉树
* @author Hzy
*
*/
public class Tree {
public static void main(String[] args) {
int[] nums = {66,8,33,56,78,89,23,45};
//创建一个根节点
Node roots = new Node();
//添加值
for (int num : nums) {
roots.add(num);
}
//打印输出
System.out.println(roots.getNodes());
}
}