首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP数据结构-完全二叉树、线索二叉树及树的顺序存储结构

    完全二叉树、线索二叉树及树的顺序存储结构 在上篇文章中,我们学习了二叉树的基本链式结构以及建树和遍历相关的操作。今天我们学习的则是一些二叉树相关的概念以及二叉树的一种变形形式。...完全二叉树 什么叫完全二叉树呢?在说到完全二叉树之前,我们先说另外一个名词:“满二叉树”。像我们之前文章中演示过的那个二叉树,就是一颗“满二叉树”。...从定义中,我们可以看出,一颗“满二叉树”,必定是一颗“完全二叉树”,而一颗叶子结点都在一层的并且所有结点都有左右孩子结点的“完全二叉树”也就是一颗”满二叉树“。...为什么要讲”满二叉树“和”完全二叉树“呢?当然是为了我们接下来的内容做铺垫。因为”满二叉树“是最符合二叉树性质的一颗树。还记得树系列的第一篇文章中介绍过的二叉树的那五个性质吗?....php

    45540

    PHP数据结构(六) ——树与二叉树之概念及存储结构

    PHP数据结构(六)——树与二叉树之概念及存储结构 (原创内容,转载请注明来源,谢谢) 一、树的含义 1、树为非线性结构,是n(n>=0)个节点的有限集,非空树有一个根节点,n>1时有m(m>0)个互不相交的子树...6、二叉树的存储结构 1)顺序结构:用一组连续的存储空间保存二叉树,按照完全二叉树的定义对每个节点进行存储,不是完全二叉树的则需要相应的位置留空。...3、对二叉树进行遍历,本质是将非线性结构的二叉树进行线性化,使每个节点至多一个前驱与一个后继。 4、用PHP遍历二叉树 二叉树结构如图: ? 代码执行结果如图: ? 源码如下: <?...php //线索二叉树 class Node{ public$left = null; public$right = null; public$data...数据结构(六) ——数组的相乘、广义表 PHP数据结构(五) ——数组的压缩与转置 PHP数据结构(四) ——队列 PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP

    1.3K100

    数据结构-二叉树(1)

    二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树 注意:对于任意的二叉树都是由以下几种情况复合而成的: 2.2 特殊的二叉树: 1....满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。 2....完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。...对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。...void HeapPop(HP* php) { assert(php); assert(php->size > 0); Swap(&php->a[0],&php->a[php->size - 1]

    14010

    【数据结构】堆和树详解&&堆和二叉树的实现&&堆的top-k问题

    ,因此二叉树是有序树 注意:对于任意的二叉树都是由以下几种情况复合而成的: 现实中的二叉树 2.2 特殊的二叉树二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。...也就是说,如果一个二叉树的层数为K,且结点总数是2^k-1,则它就是满二叉树 如果一个树是满二叉树,结点总数是N,那它的高度h=log2(N+1) 每一层都是满的 完全二叉树:完全二叉树是效率很高的数据结构...,完全二叉树是由满二叉树而引出来的。...0; } //销毁 void HPDestroy(HP* php) { assert(php); free(php->a); php->a = NULL; php->size = 0; php...) { assert(php); assert(php->size > 0); Swap(&php->a[0], &php->a[php->size - 1]); php->size--; AdjustDown

    11610

    二叉树详解(1)

    二叉树的概念及结构 2.1 概念 一棵二叉树是结点的一个有限集合,该集合: 或者为空 由一个根节点加上两棵别称为左子树和右子树的二叉树组成 从上图可以看出: 二叉树不存在度大于2的结点 二叉树的子树有左右之分...,则这个二叉树就是满二叉树;也就是说,如果一个二叉树的层数为K,且结点总数是 2的k次方 - 1 ,则它就是满二叉树。...完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。...对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树,要注意的是满二叉树是一种特殊的完全二叉树。...二叉树的顺序结构及实现 3.1 二叉树的顺序结构 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费;而完全二叉树更适合使用顺序结构存储。

    9310

    【数据结构】二叉树---堆

    二、二叉树 1.二叉树的概念 一棵二叉树是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。...从上图可以看出: 二叉树不存在度大于2的结点 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树 注意:对于任意的二叉树都是由以下几种情况复合而成的: 2.特殊的二叉树二叉树:一个二叉树,如果每一个层的结点数都达到最大值...,则这个二叉树就是满二叉树。...也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。...(HP* php); //释放内存 void HeapDestory(HP* php); 堆向下调整算法:现在我们给出一个数组,逻辑上看做一颗完全二叉树

    10110
    领券