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函数
Jan 11 PHP
PHP 透明水印生成代码
Aug 27 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
php中strtotime函数用法详解
Nov 15 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
PHP copy函数使用案例代码解析
Sep 01 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
微信小程序和php的登录实现
Apr 01 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python 随机森林算法及其优化详解
2019/07/11 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
学习十八届三中全会精神实施方案
2014/02/17 职场文书
原材料检验岗位职责
2014/03/15 职场文书
监察建议书
2015/02/04 职场文书
中考学习决心书
2015/02/04 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书