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 相关文章推荐
某大型网络公司应聘时的笔试题目附答案
Mar 27 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
php中使用url传递数组的方法
Feb 11 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php函数的常用方法及注意之处小结
2011/07/10 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
软件配置管理有什么好处
2015/04/15 面试题
总裁秘书岗位职责
2013/12/04 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
化学教育专业求职信
2014/07/08 职场文书
公民授权委托书范本
2014/09/17 职场文书
死亡赔偿协议书
2015/01/28 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android