PHP完全二叉树定义与实现方法示例


Posted in PHP onOctober 09, 2017

本文实例讲述了PHP完全二叉树定义与实现方法。分享给大家供大家参考,具体如下:

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

PHP完全二叉树定义与实现方法示例

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

<?php
class 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程序设计有所帮助。

PHP 相关文章推荐
PHP超级全局变量数组小结
Oct 04 PHP
php牛逼的面试题分享
Jan 18 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
PHP实现的折半查询算法示例
Oct 09 #PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 #PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 #PHP
PHP实现打包下载文件的方法示例
Oct 07 #PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 #PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 #PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 #PHP
You might like
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
Django中url的反向查询的方法
2018/03/14 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
高一化学教学反思
2014/02/05 职场文书
学雷锋宣传标语
2014/06/25 职场文书
教师自查自纠材料
2014/10/14 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS