欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP完全二叉树定义与实现方法示例

程序员文章站 2022-08-13 23:53:51
本文实例讲述了php完全二叉树定义与实现方法。分享给大家供大家参考,具体如下: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第...

本文实例讲述了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基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家php程序设计有所帮助。