php之二叉树,PHP数据结构之实现链式二叉树与遍历

/********************************************************

* 我写的PHP都是从C语言的数据结构中演化而来************************

**************************************************************

/**

*    ******二叉树图****

*      A                    *

*     * *                   *

*    *   *                  *

*   B     C                *

*        *                   *

*       *                    *

*      D                    *

*       *                    *

*         *E                *

******************

* PHP- 链式二叉树的遍历---先序遍历(根,左,右)-中序遍历(左,根,右)-后序遍历(左,右,根)

* 先 A B C D E

* 中 B A D E C

* 后 B E D C A

* @Author 任孟洋

* @time   2013-8-10

****/

Class  BTreeNode{

public  $data ; //数据域

public  $LeftHand  = NULL ; //左指针

public  $RightHand = NULL ; //右指针

public function  __construct($data){

if(!empty($data))

{

$this->data = $data;

}

}

//先序遍历(根,左,右)递归实现

public  function PreTraverseBTree($BTree){

if (NULL !== $BTree)

{

var_dump($BTree->data);  //根

if (NULL !== $BTree->LeftHand)

{

$this->PreTraverseBTree($BTree->LeftHand); //递归遍历左树

}

if (NULL !== $BTree->RightHand)

{

$this->PreTraverseBTree($BTree->RightHand); //递归遍历右树

}

}

}

//中序遍历(左,根,右)递归实现

public  function  InTraverseBTree($BTree){

if (NULL !== $BTree)

{

if (NULL !== $BTree->LeftHand)

{

$this->InTraverseBTree($BTree->LeftHand); //递归遍历左树

}

var_dump($BTree->data); //根

if (NULL !== $BTree->RightHand)

{

$this->InTraverseBTree($BTree->RightHand); //递归遍历右树

}

}

}

//后序遍历(左,右,根)递归实现

public  function  FexTarverseBTree($BTree){

if (NULL !== $BTree)

{

if (NULL !== $BTree->LeftHand)

{

$this->FexTarverseBTree($BTree->LeftHand); //递归遍历左树

}

if (NULL !== $BTree->RightHand)

{

$this->FexTarverseBTree($BTree->RightHand); //递归遍历右树

}

var_dump($BTree->data); //根

}

}

}

header("Content-Type:text/html;charset=utf-8");

echo '先的内存为'.var_dump(memory_get_usage());

echo '


';

//创建五个节点

$A  = new  BTreeNode('A');

$B  = new  BTreeNode('B');

$C  = new  BTreeNode('C');

$D  = new  BTreeNode('D');

$E  = new  BTreeNode('E');

//连接形成一个二叉树

$A->LeftHand  = $B;

$A->RightHand = $C;

$C->LeftHand  = $D;

$D->RightHand = $E;

//先序遍历

echo '先序遍历的结果'.'
';

$A->PreTraverseBTree($A);

echo '
中序遍历的结果'.'
';

$A->InTraverseBTree($A);

echo  '
后序列遍历的结果'.'
';

$A->FexTarverseBTree($A);

echo '


';

echo '后的内存为'.var_dump(memory_get_usage());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值