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类
Oct 09 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
全新Mac配置PHP开发环境教程
Feb 03 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 PHP
PHP 对象继承原理与简单用法示例
Apr 21 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教程 预定义变量
2009/10/23 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
整理AngularJS中的一些常用指令
2015/06/16 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
Vue.js第四天学习笔记
2016/12/02 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python模块restful使用方法实例
2013/12/10 Python
python中pycurl库的用法实例
2014/09/30 Python
python创建临时文件夹的方法
2015/07/06 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Python接口测试文件上传实例解析
2020/05/22 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
小学数学课题方案
2014/06/15 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
债务纠纷代理词
2015/05/25 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
pytorch实现ResNet结构的实例代码
2021/05/17 Python