Php 递归二叉树
我一直在用PHP探索它的潜力,所以我试着看看是否可以实现一个二叉树结构。代码如下:Php 递归二叉树,php,binary-tree,binary-search-tree,Php,Binary Tree,Binary Search Tree,我一直在用PHP探索它的潜力,所以我试着看看是否可以实现一个二叉树结构。代码如下: class Node{ public $leftNode; public $rightNode; public $value; public function Node($value){ $this->value = $value; } } class binTree{ public function inserter(Node $node,
class Node{
public $leftNode;
public $rightNode;
public $value;
public function Node($value){
$this->value = $value;
}
}
class binTree{
public function inserter(Node $node, $value){
if($value < $node->value){
if($node->leftNode != null){
inserter($node, $value);
}
else{
$node->leftNode = new Node($value);
}
}
else if($value > $node->value){
if($node->rightNode != null){
inserter($node, $value);
}
else{
$node->rightNode = new Node($value);
}
}
}
}
类节点{
公共节点;
公共$rightNode;
公帑价值;;
公共功能节点($value){
$this->value=$value;
}
}
类二叉树{
公共函数插入器(节点$Node,$value){
如果($value<$node->value){
如果($node->leftNode!=null){
插入器($node,$value);
}
否则{
$node->leftNode=新节点($value);
}
}
else if($value>$node->value){
如果($node->rightNode!=null){
插入器($node,$value);
}
否则{
$node->rightNode=新节点($value);
}
}
}
}
现在由于某种原因,当我尝试在其内部调用插入器函数(即插入器($node,$value))时,我得到了以下错误:
Fatal error:call to undefined function inserter().
因此我尝试通过$this甚至binTree::引用它,但运气不佳。我得到了致命错误:在不在对象上下文中时使用$this
和致命错误:允许的内存大小分别为134217728字节。
错误。有人能解释发生了什么吗?我怀疑您的问题如下:
php构造函数就是这样工作的
public function __construct ()
{
}
(vs C#与您正在使用的语法类似)尝试以下方法:
<?php
class Node{
public $leftNode;
public $rightNode;
public $value;
// changed the constructor name from "Node" to "__construct"
public function __construct($value){
$this->value = $value;
}
}
class binTree{
public function inserter(Node $node, $value){
if($value < $node->value){
if($node->leftNode != null){
// added "$this->"
$this->inserter($node, $value);
}
else{
$node->leftNode = new Node($value);
}
}
else if($value > $node->value){
if($node->rightNode != null){
// added "$this->"
$this->inserter($node, $value);
}
else{
$node->rightNode = new Node($value);
}
}
}
}
$binTree = new binTree();
$binTree->inserter(new Node('foo'), 'bar');