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());
總結
以上是生活随笔為你收集整理的php之二叉树,PHP数据结构之实现链式二叉树与遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java软件测试技能要求_软件测试需要掌
- 下一篇: 泸州福窖之雅酒怎么样?