博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之树
阅读量:6633 次
发布时间:2019-06-25

本文共 1048 字,大约阅读时间需要 3 分钟。

树:非线性结构——————其实更像是一串葡萄,哈哈

  定义:

    专业定义:

      1、有且只有一个成为根节点;

      2、有若干个互不相交的的子树,这些子树本身也是一颗树;

    通俗的定义:

      1、树是由节点和边(指针域)组成;

      2、每个节点只有一个父节点,但可以有很多个子节点;

      3、但有一个节点例外,该节点没有父节点,此节点成为根节点;

   涉及的术语:

    节点, 父节点, 子节点, 子孙, 堂兄弟;

    深度:从根节点到最底层节点的层数称之为深度;

    叶子节点:没有子节点的节点

    非终端节点:实际就是非叶子节点

    度:子节点的个数;

    树的度:子节点的个数数目中最大值;

  树分类:

    一般树:任意一个子节点的个数的都不受限制;

    二叉树;任意一个节点的字节点的个数最多两个,且子节点的位置不可改变;

       一般二叉树

       满二叉树:在不增加树层数的前提下,无法再多添加一个节点的二叉树;

       完全二叉树(重点):如果只是删除了满二叉树最底层右边连续若干个节点。这样形成的二叉树;

     森林:n个互不相交的树的集合;

树的存储:

  二叉树的存储(重点):(一般二叉树转成完全二叉树来存储?原因是树是非线性的,而我们要线性的保存它,所以要将非线性转成线性来存储)

    连续存储【完全二叉树】:

      优点:查找某个节点的父节点和子节点(包括查找某个节点有没有子节点)

      缺点:耗用内存空间过大;

    链式存储:

      (每个节点分三块)

  一般树的存储:

    双亲表示法,孩子表示法,双亲孩子表示法,

    二叉树表示法:

      把一个普通树转化成二叉树来储存,具体转换方法:设法保证任意一个节点的左指针域指向它的第一个孩子,右指针域指向它的兄弟;

      通过此办法,就可以将一颗树转化为二叉树;

·      一个普通树转化成的二叉树一定没有右子树;

       如下图所示:

          

  森林的存储:

    转化为二叉树储存;规则如同普通树转化成二叉树一致;(每棵树根节点为兄弟节点)

    如下图所示:

    

 霍夫曼树:每个节点要么没有子节点,要么有两个子节点;

 

转载于:https://www.cnblogs.com/chris-cp/p/4055513.html

你可能感兴趣的文章
php实现按utf8编码对字符串进行分割
查看>>
Ftp的断点下载实现
查看>>
[转载] ubuntu Authentication failure
查看>>
Ring0 - 链表
查看>>
修改数组之----splice
查看>>
Linux中chkconfig使用介绍
查看>>
二进制方式快速安装MySQL数据库
查看>>
查询指定库中所有表
查看>>
Flash AS3 Loader的一些总结
查看>>
js的逻辑 OR 运算符- ||
查看>>
[SQL Server]一次执行资料夹内的.sql 指令码
查看>>
【计算机视觉】粒子滤波跟踪
查看>>
hadoop集群扩展
查看>>
操作系统诊断
查看>>
[Compose] 19. Leapfrogging types with Traversable
查看>>
Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
查看>>
2015年度新增开源软件排名TOP100
查看>>
BZOJ 2456: mode(新生必做的水题)
查看>>
View State
查看>>
自旋锁spinlock解析
查看>>