若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

PHP代码实现(暂时实现添加节点、层次遍历节点,删除节点后续更新)

<?phpclass Node{public $value;public $leftNode;public $rightNode;}/* 找到空节点 */
function findEmpytNode($node, $parent = null){if(empty($node->value)){return $node;}else{if(empty($node->leftNode->value)){return $node->leftNode;}else if(empty($node->rightNode->value)){return $node->rightNode;}else{if(empty($parent) || $node->value == $parent->rightNode->value){return findEmpytNode($node->leftNode, $node);}else{return findEmpytNode($parent->rightNode, $node);}}}
}/* 添加节点 */
function addNode($node, $value){$emptyNode = findEmpytNode($node);setNode($emptyNode, $value);
}/* 设置节点 */
function setNode($node, $value){$node->value = $value;$node->leftNode = new Node();$node->rightNode = new Node();
}/* 打印 */
function printTree($node, $parent = null){if(empty($node->value)) return ;echo $node->leftNode->value;echo $node->rightNode->value;if(empty($parent) || $node->value == $parent->rightNode->value){printTree($node->leftNode, $node);}else{printTree($parent->rightNode, $node);}
}$head = new Node();
setNode($head, 1);
addNode($head, 2);
addNode($head, 3);
addNode($head, 4);
addNode($head, 5);
addNode($head, 6);printTree($head);

PHP实现完全二叉树相关推荐

  1. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)

    题意: 给出一系列数,要求组成AVL树,最后层序输出,并且判断是否为一个完全二叉树 要点: 这题就是一个AVL树的插入和判断完全二叉树,之前分别都有出现过,AVL树的建立需要记忆. #include& ...

  2. 数据结构 - 完全二叉树

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 完全二叉 ...

  3. python构造一个二叉树_如何用python构造一个n层的完全二叉树

    展开全部 用python构造一个5261n层的完全二叉树4102的代码如下: typedef struct { int weight; int parent, lchild, rchild; } HT ...

  4. 完全二叉树、平衡二叉树、二叉查找树(二叉排序树)

    完全二叉树 完全二叉树是一种特殊的二叉树,满足以下要求: 所有叶子节点都出现在 k 或者 k-1 层,而且从 1 到 k-1 层必须达到最大节点数: 第 k 层可以不是满的,但是第 k 层的所有节点必 ...

  5. 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)

    平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...

  6. 有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题

    1.给定一棵完全二叉树的头节点head,求其中的节点个数 递归的方法,时间复杂度为O((logN)²) 首先递归出头节点的左子树的最大深度H,之后再递归头节点的右子树的深度是否等于H,若相等则表示,头 ...

  7. PAT甲级1147 Heaps (30 分):[C++题解]堆、树的遍历、dfs、完全二叉树建树

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:给定完全二叉树,判断是否是堆,需要区分大根堆,小根堆.后面是输出后序遍历. AC代码 #include<bits/stdc++. ...

  8. PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿 ...

  9. PAT甲级1123 Is It a Complete AVL Tree (30分):[C++题解]建立平衡树、bfs,判完全二叉树

    文章目录 题目分析 题目链接 题目分析 来源:pat网站 本题作为进阶题,它的基础知识点如下几题. PAT甲级1066 Root of AVL Tree (25分):[C++题解]建立平衡树(AVL树 ...

  10. PAT甲级1110 Complete Binary Tree:[C++题解]判断完全二叉树

    文章目录 题目分析 题目链接 题目分析 分析: 按照层序的顺序将完全二叉树存在下标从1开始的数组中.如果是完全二叉树,会将数组中1 ~ n这些位置填满,最大下标就是n,如果最大下标大于n,说明中间有空 ...

最新文章

  1. 关于Linux路由表的route命令(转)
  2. CDesktopView类
  3. 升级win10的理由
  4. 哇靠靠,这也行?零基础DIY无人驾驶小车(一)
  5. 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?
  6. 图解Javascript——作用域、作用域链、闭包
  7. HDU.1004 Let the Balloon Rise
  8. centos7.0上安装五笔输入法
  9. mysql定时event创建每隔一天_mysql用event设置定时任务
  10. pandas小记:pandas汇总统计函数
  11. JAVA获取文件本身所在的磁盘位置
  12. eclipse环境变量配置步骤
  13. java初学者:封装 继承 多态的理解
  14. Win7重装后修复Ubuntu引导项
  15. Linux - Unix环境高级编程(第三版) 代码编译
  16. joan jett(mv)
  17. hive中的内部表和外部表
  18. dau计算公式_数据分析体系 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)...
  19. layui实现增删改查——图书管理
  20. Win10怎么设置文件夹密码|Win10不压缩文件夹设置密码

热门文章

  1. html pt兼容,FCKEditor,一个HTML可视化编辑器,兼容很好
  2. 湖南省公务员考试计算机专业,湖南省2018年普通高等学校对口招生考试计算机应用类专业综合知识试题...
  3. linux怎么重载mysql配置命令_在Linux系统中启动/停止/重新启动/启用/重新加载MySQL和MariaDB服务...
  4. python不用sort排序_Python排序方法sort、sorted的key参数的作用
  5. Django:数据进行md5加密
  6. 谷粒商城:14.全文检索ElasticSearch
  7. Node:根据开发环境配置axios默认路径
  8. Cesium:获取某个entity的位置属性 Cartesian3
  9. JavaScript cookie js cookie设置
  10. 大脑开发——超右脑觉醒