一、介绍
对于java中“树”这个概念,顾名思义就像是现实中存在的树一样,分为根、枝、叶三个部分,而在java中就分为根结点,枝结点,叶结点,你可以根据需要选择在各个节点里存储数据,二叉树对于数据的存储和查找都比较好。
二、使用
无论是哪一种树都是由很多结点组成的,每一个结点包含所需存储的数据,如果是枝结点还需存储自己的左右子节点,其实树节点也可以看成没有子节点的枝结点,建立一个树,首先需要定义一个结点类:下面就定义了一个简单的结点类
public class TreeNode {
private int obj;
private TreeNode left = null;
private TreeNode right = null;
private TreeNode root = null;
public TreeNode(int obj){//存入数据元素
this.obj = obj;
}
}
借用上边的结点,先实例化结点对象,然后把这些独立的结点对象,按照一定的规律一个一个的链接起来,当然根节点是固定的,这样接下来就可以开枝散叶了。
三、示例
下面是通过以上的方法,按照数据的大小构建了一棵二叉搜索树:
/*
* 把数据存入树中
*/
public void transINtree(TreeNode nodechild,TreeNode nodefat){
//大于左结点
if(nodechild.getObj()<nodefat.getObj()){
if(nodefat.getLeft()==null){ //如果左结点为空,则将结点存储进去
nodefat.setLeft(nodechild);
nodechild.setRoot(nodefat);
}else{
//如果左结点不为空,则继续查找
transINtree(nodechild, nodefat.getLeft());
}
}
//大于右结点
if(nodechild.getObj()>nodefat.getObj()){
if(nodefat.getRight()==null){ //如果右结点为空,则将结点存储进去 nodefat.setRight(nodechild);
nodechild.setRoot(nodefat);
}else{
//如果右结点不为空,则继续查找
transINtree(nodechild, nodefat.getRight());
}
}
由二叉树的结构可以得出:在二叉树里查找数据的复杂度是n的以2为底的对数,而在一般的线性表里查找数据的复杂度为n,所以通过二叉搜索树查找数据的效率可见一斑。
分享到:
相关推荐
简单的实现了树与二叉树的转换功能!很实用
树与二叉树_习题树与二叉树_习题树与二叉树_习题
树与二叉树相互转化 树的前根遍历和后根遍历 源代码
树与二叉树的详细算法,很全 以二叉树表示算术表达式 建立二叉树算法 以及一些习题
课程设计 二叉树的遍历及树与二叉树的转换 报告并能按照树的形式打印出来。
很好的一个课件,详细,基础的讲述了数据结构中最难理解的部分,帮助理解树与二叉树。。
数据结构课程设计,树与二叉树的转换,C++,用双亲表示孩子数,双亲表示法
数据结构树与二叉树数据结构树与二叉树数据结构树与二叉树
树与二叉树的课件,数据结构(C++)版,讲的很详细
数据结构树与二叉树算法汇总 适合需要面试的同志们快速浏览
树与二叉树讲课课件,对树的知识点进行了详细的讲解。
(2)选取与合并:在F中选取根结点的权值最小的两棵二叉树分别作为左、右子树构造一棵新的二叉树,这棵新的二叉树的根结点的权值为其左右子树根结点的权值之和。 (3)删除与加入:在F中删除作为左、右子树的两棵...
《软件技术基础》版的树与二叉树课件,较为详细的叙述了树与森林的关系。
树与二叉树详细整理.ppt
数据结构-树与二叉树算法汇总,考研面试等很多常见的题型.
数据结构之树与二叉树算法总结,数据结构之树与二叉树算法总结 数据结构
数据结构课程设计 二叉树的各种遍历算法及树与二叉树的转换程序及报告 可以按照树的形状输出
详细的树和二叉树的教程,还附有源代码 部分代码如下: 二叉树头文件.h //二叉树的二叉链表存储表示 typedef struct BiTNode {TElemType data; //二叉树结点数据域 struct BiTNode *lchild,*rchild; //左右孩子指针...