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 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP实现文件上传与下载
Aug 28 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
php防止sql注入的方法详解
2017/02/20 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
javascript工具库代码
2012/03/29 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
Python flask框架post接口调用示例
2019/07/03 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
python 绘制场景热力图的示例
2020/09/23 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
机关出纳岗位职责
2014/04/03 职场文书
金融管理专业求职信
2014/07/10 职场文书
校园新闻稿范文
2015/07/18 职场文书
七夕情人节问候语
2015/11/11 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android