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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
如何使用脚本模仿登陆过程
Nov 22 PHP
用php过滤危险html代码的函数
Jul 22 PHP
php 破解防盗链图片函数
Dec 09 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 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程序内部post数据的方法
2015/03/31 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
解读! Python在人工智能中的作用
2017/11/14 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
windows下python安装pip方法详解
2020/02/10 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
使用Python封装excel操作指南
2021/01/29 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
给护士表扬信
2014/01/19 职场文书
致400米运动员广播稿
2014/02/07 职场文书
保险专业自荐信范文
2014/02/20 职场文书
个人欠款担保书
2014/05/20 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
集结号观后感
2015/06/08 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python
Python常遇到的错误和异常
2021/11/02 Python
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA