天天看点

java二叉树插入数据_二叉树(一)_Java插入数据呈现二叉树结构

以二叉树的形式存储数据

定义一个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);

}

执行流程

java二叉树插入数据_二叉树(一)_Java插入数据呈现二叉树结构

原文:https://www.cnblogs.com/zhougongjin/p/11124957.html