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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php实现Mysql简易操作类
Oct 11 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 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 Ajax实现页面无刷新发表评论
2007/01/02 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python 格式化输出百分号的方法
2019/01/20 Python
python基础 range的用法解析
2019/08/23 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
物业管理员岗位职责范文
2013/11/25 职场文书
银行求职信怎么写
2014/05/26 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
国庆庆典邀请函
2015/02/02 职场文书
保卫工作个人总结
2015/03/03 职场文书
javascript函数式编程基础
2021/09/15 Javascript
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL