编程语言
首页 > 编程语言> > 二叉树(一)_Java插入数据呈现二叉树结构

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

作者:互联网

以二叉树的形式存储数据

定义一个BinaryTree的泛型类,这个类只有一个属性root记录总根节点,提供唯一的方法添加数据到root,如果不是添加到root就调用子树的addElement方法。

package com.dy.dateStructure.test;

public class BinaryTree<T> {
	private ChildTree root;

	public void addNode(Comparable<T> 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<T> {
	private Comparable<T> root;
	private ChildTree left;
	private ChildTree right;
	
	
	public ChildTree(Comparable<T> root) {
		super();
		this.root = root;
	}
	public void addElement(Comparable<T> 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,addNode,ChildTree,data,binaryTree,插入,二叉树,root,节点
来源: https://www.cnblogs.com/zhougongjin/p/11124957.html