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 a simple smtp class
Nov 26 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
PHP 命名空间实例说明
Jan 27 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
PHP7 弃用功能
Mar 09 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php 计划任务 检测用户连接状态
2012/03/29 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
shiro授权的实现原理
2017/09/21 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
JS中的BOM应用
2018/02/02 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
树莓派升级python的具体步骤
2020/07/05 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
优秀企业获奖感言
2014/02/01 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS