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脚本的10个技巧(5)
Oct 09 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
php阳历转农历优化版
Aug 08 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
PHP调用接口API封装的例子
Oct 11 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
php中的实现trim函数代码
2007/03/19 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP 进程锁定问题分析研究
2009/11/24 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
$()JS小技巧
2007/07/21 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
python自动生成sql语句的脚本
2021/02/24 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
最新的大学生找工作自我评价
2013/09/29 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年团支部工作总结
2014/11/17 职场文书
创业计划书之酒吧
2019/12/02 职场文书
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis