`
李瑞辉++
  • 浏览: 20664 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

树与二叉树

 
阅读更多

一、介绍

对于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,所以通过二叉搜索树查找数据的效率可见一斑。

分享到:
评论

相关推荐

    树与二叉树的转换

    树与二叉树之间的转换是一个重要的概念,尤其是在数据结构和算法的学习中。下面我们将详细探讨这个主题。 一、树到二叉树的转换 1. 顺序遍历法:树转换为二叉树的主要方法是通过前序遍历(Preorder Traversal)、...

    树与二叉树_习题

    在计算机科学中,树与二叉树是两种重要的数据结构,它们在算法设计、数据库管理、编译原理等领域有着广泛的应用。本节我们将深入探讨树与二叉树的相关习题和知识点。 首先,我们来看一个关于满二叉树的问题。一棵...

    树与二叉树相互转化 树的遍历 源代码

    树与二叉树之间的转化是一个重要的概念,尤其是在数据结构和算法的学习中。下面我们将详细探讨这个主题,同时也会涉及树的遍历方法。 首先,让我们了解如何将树转化为二叉树。一种常见的转化方法是赫夫曼编码...

    树与二叉树算法总结

    树与二叉树算法总结 树与二叉树是计算机科学中非常重要的一部分,掌握树与二叉树的算法对于数据结构和算法设计非常重要。本文将对树与二叉树的基本概念、性质、运算和应用进行总结。 一、树的基本概念 树是一种非...

    课程设计 二叉树的遍历及树与二叉树的转换

    本次课程设计的主题是“二叉树的遍历及树与二叉树的转换”,这涉及到两个核心概念:二叉树的遍历方法和树与二叉树之间的转化。 首先,我们来深入理解二叉树的遍历。二叉树是由节点构成的数据结构,每个节点最多有两...

    数据结构(C语言版) 第五章 树与二叉树 知识梳理 + 作业习题详解1

    本文主要梳理了树与二叉树的相关知识点,并包含了相关作业习题的详解。 首先,树被定义为一个有限集合,其中包含一个特殊的根节点以及可能的子树集合。每个子树本身也是一个树,这种定义具有递归性。在树的结构中,...

    数据结构课程设计,树与二叉树的转换,C++

    因此,理解树与二叉树之间的转换是非常有价值的,它可以帮助我们根据问题选择最合适的表示方法。 总的来说,本课程设计的目标是加深对树和二叉树的理解,掌握它们之间的转换方法,并能用C++编程语言实现这个转换...

    数据结构-树与二叉树算法汇总

    "树与二叉树算法汇总" 本资源摘要信息主要讨论树与二叉树算法,涵盖树与二叉树的表示、遍历和操作等方面的知识点。 一、树与二叉树的表示 树是一种基本的数据结构,用于存储具有层次关系的数据。二叉树是树的一种...

    树与二叉树PPT

    很好的一个课件,详细,基础的讲述了数据结构中最难理解的部分,帮助理解树与二叉树。。

    数据结构树与二叉树算法汇总

    根据给定的信息,本文将对数据结构中的树与二叉树相关的算法进行详细的解析与总结。主要内容包括:如何使用二叉树表示算术表达式、二叉树的顺序存储结构及其中叶子节点的计算方法、以及如何递归地构建二叉树并判断其...

    树与二叉树的转换及二叉树的遍历 课程设计说明书 附代码

    "树与二叉树的转换及二叉树的遍历" 本设计的主要目的是实现树与二叉树的转换,并实现二叉树的遍历。通过本设计,学生可以巩固所学的理论知识,培养综合运用所学知识解决实际问题的能力。 一、树与二叉树的转换 树...

    树与二叉树详细整理.ppt

    "树与二叉树详细整理" 树是一种非线性数据结构,主要用于描述带有层次关系的数据集。树的形式化定义是:树是由一个或多个结点组成的有限集合,其中有一个特定的称为根的结点;其余结点可分为m(m≥0)个互不相交的...

    数据结构java树与二叉树PPT课件.pptx

    "数据结构java树与二叉树PPT课件.pptx" 本资源是关于数据结构中的树和二叉树的PPT课件,共51页。该资源对树和二叉树的定义、基本术语、类型、遍历方法等进行了详细的介绍。 树的定义: 树是由n(n≥0)个有限数据...

    树与二叉树 源代码

    在计算机科学领域,树与二叉树是两种重要的数据结构,它们在算法设计、数据库管理、编译原理等多个方面有着广泛的应用。这个压缩包文件包含了关于树与二叉树操作的源代码,让我们来深入探讨这些概念及其相关知识点。...

Global site tag (gtag.js) - Google Analytics