• 树和二叉树在java中


    树代表一种非线性的数据结构,如果一组数组节点之间存在复杂的一对多关联时,程序就可以考虑使用树来保存这组数据了。

    线性表、栈和队列都是线性的数据结构,这种数据结构之内的元素只存在一个对一个的关系、存储,处理起来比较方便。

    计算机世界里的树,是从自然界实际的树抽象出来的,它指的是N个有父子关系的节点的有限集合。对于这个有限的节点集合而言,它满足如下条件:

    当N=0时,该节点集合为空,这棵树也被称为空树;

    在任意的非空树种,有且仅有一个根(root)节点;

    当N>1时,除根节点以外的其余节点可分为M个互为相交的有限集合T1,T2,。。,TM,其中的每个集合本身又是一颗树,并称其为根的子树(subtree)。

    从上面定义可以发现树的递归特性:一根树由根和若干棵子树组成,而每个子树又由若干棵更小的子树组成。

    树种任一节点可以有0或多个子节点,但只能有一个父节点。根节点是一个特例,根节点没有父节点,叶子结点没有子节点。树中每个节点既可以是其上一级节点的子节点,也可以是下一级节点的父节点,因此同一个节点可以既是父节点,也是子节点(类似于一个人-他既是儿子的父亲,也是父亲的儿子)。

    很显然,父子关系是一种非线性关系,所以树结构是非线性结构。

    如果按节点是否包含子节点来分,节点分成以下两种。

    普通节点:包含子节点的节点。

    叶子节点:没有子节点的节点,因此叶子结点不可作为父节点。

    如果按节点是否具有惟一的父节点来分,节点又可分为如下两种。

    根节点:没有父节点的节点,根节点不可作为子节点。

    普通节点:具有惟一父节点的节点。

    一棵树只能有一个根节点,如果一颗树有了多个根节点,那它已经不再是一颗树,而是多棵树的集合,有时也被称为森林。

    二叉树指的是每个节点最多只能有两个子树的有序树。通常左边的子树被称作“左子树”(left subtree),右边的子树被称作“右子树”(right subtree)。二叉树的每个节点最多只有2棵子树(不存在度大于2的节点),二叉树的子树有左、右之分,次序不能颠倒。

    树和二叉树两个重要区别:

    树中节点的最大度数没有限制,而二叉树节点的最大度数为2,也就是说二叉树是节点的最大度数为2的树;

    无序树的节点无左、右之分,而二叉树的节点有左、右之分,也就是说二叉树是有序树。

  • 相关阅读:
    c语言指针应用总结
    C语言指针知识点
    标准输出scanf函数
    C语言32个关键字查询
    kali2020 无法使用arpspoof ,切换阿里云源进行安装
    “中国网络安全能力图谱”发布,安华金和当选数据安全领域代表者!
    【官方文档】-Windows Server 安装和升级
    SQL Server 2012配置Always On可用性组
    【官方文档】-SQL Server 的最大容量规范
    【官方文档】-按 SQL Server 版本划分的计算能力限制
  • 原文地址:https://www.cnblogs.com/riskyer/p/3400445.html
Copyright © 2020-2023  润新知