博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小蚂蚁学习数据结构(17)——树、二叉树性质、储存方式
阅读量:6123 次
发布时间:2019-06-21

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

hot3.png

    是一类非线性数据结构,是以分支关系定义的层次结构。

特点:

    至少有一个节点——根,只有根的树成为最小树

    树中各子树是互不相交的集合

术语(略)

二叉树

    特点:

        每个节点最多有二颗子树

        子树有左右之分,而且不能任意颠倒

    性质

        1,在二叉树的第i层至多有2^(i-1)个节点(i >=1)

        2,深度为k的二叉树至多有2^k - 1个节点(k>=1)

        3,对任何一颗二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0 = n2 + 1(书上有一段神奇的推导过程)

        满二叉树:

            看着整个轮廓是个完整的三角形的树就是满二叉树。(自己定义的)

        完全二叉树:

            除了最后一行,上面是个满二叉树,最后一行依次排列。(也是自己定义的)

        4,具有n个节点的完全二叉树的深度为 以2为底n的对数 + 1

        5,如果对一颗有n个节点的完全二叉树的节点按层序编号,则对任一节点i(1 <= i <= n),有:

            1)如果i=1,节点i就是二叉树的根,没有父节点;如果i>1,则其双亲是 i/2,向下取整。

            2)如果2i>n,这节点i无左孩子。如果2i<=n,则其左孩子就是2i

            3)如果2i+1>n,这节点i无右孩子。如果2i+1<=n,则其右孩子就是2i+1

二叉树的存储结构

    顺序存储结构

        特点:

            节点间关系蕴含在其存储位置中。

            浪费空间,适于存储满二叉树和完全二叉树。

            很少用这种顺序存储结构,1,浪费空间,2,插入删除很费劲儿,时间复杂度高。

    链式存储结构

        二叉链表 : 左孩子指针、右孩子指针、数据域

        三叉链表 : 比上面多了一个 父节点指针

    总结:

        在二叉链表中,查找节点都要从根节点开始进行查找,查找的时间复杂度是节点的个数。而在三叉链表中查找节点实现就比较容易些,因为针对每个节点都可以进行上行查找或者下行查找。

学PHP的小蚂蚁 博客 

转载于:https://my.oschina.net/woshixiaomayi/blog/603858

你可能感兴趣的文章
交互式命令 expect
查看>>
Activiti系列——如何在eclipse中安装 Activiti Designer插件
查看>>
listener.ora中PLSExtPro 和ExtProc的作用(转)
查看>>
Odoo(OpenERP)配置文件openerp-server.conf详解
查看>>
三思考,实现自己定义404页:Tomcat、SpringMVC精确匹配、重写DispatchServlet
查看>>
oracle record is locked by another user
查看>>
每天一个linux命令(30): chown命令
查看>>
15个网站性能测试工具
查看>>
无需Cygwin,如果没有在命令行,Eclipse编NDK
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(8)——文件下载、删除
查看>>
Http的操作(不传递参数)
查看>>
MFC中的CDC详细教程
查看>>
解决:Linux版百度云客户端 BCloud网络错误 问题
查看>>
Kernel启动时 驱动是如何加载的module_init,加载的次序如何;略见本文
查看>>
使用 Inno Setup 快速打包你的应用程序(转载)
查看>>
第七章 概率图模型理论在计算机视觉中的应用
查看>>
构建Logstash+tomcat镜像(让logstash收集tomcat日志)
查看>>
zabbix
查看>>
dll的使用
查看>>
通过show status 来优化MySQL数据库
查看>>