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 09 PHP
php a simple smtp class
Nov 26 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
Laravel 验证码认证学习记录小结
Dec 20 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
关于python多重赋值的小问题
2019/04/17 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
中式婚礼主持词
2014/03/13 职场文书
竞聘书模板
2014/03/31 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
助学贷款贫困证明
2014/09/23 职场文书
团员个人总结
2015/02/26 职场文书
个人政治思想总结
2015/03/05 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python