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抽象类 介绍
Jun 13 PHP
解析ajax事件的调用顺序
Jun 17 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
Laravel框架表单验证操作实例分析
Sep 30 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日历程序
2006/12/06 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
新闻内页-JS分页
2006/06/07 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python实现大量图片重命名
2020/03/23 Python
Python 操作 MySQL数据库
2020/09/18 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
公益广告语集锦
2014/03/13 职场文书
大学生就业意向书范文
2014/04/01 职场文书
小学班主任寄语大全
2014/04/04 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
党日活动总结
2014/05/07 职场文书
新店开张活动方案
2014/08/24 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
裁员通知
2015/04/25 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
Nginx的基本概念和原理
2022/03/21 Servers