ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-03 10:54:17  阅读:189  来源: 互联网

标签:Java addNode ChildTree data binaryTree 插入 二叉树 root 节点


以二叉树的形式存储数据

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有