php怎么实现二叉树的存储

原创
2016-06-13 11:06:57 504浏览

php如何实现二叉树的存储?

就像上面图片里面所画的一样,我怎么把那一串数字用二叉树存起来?用php实现。
求大神帮忙呀!!!!
==========初学二叉树
------解决方案--------------------
这个很简单

class node{
public var $per;
public var $lNode;
public var $rNode;

function test1(){
}

function test2(){
}
}

由于php是弱类型语言,你只要清楚$lNode和$rNode的类型是node,赋值时一定要把node类型的左右节点赋给对应的就可以了。
$node0=new node();
$node0->per = 49;
$node1=new node();
$node1->per = 20;
$node2=new node();
$node2->per = 29;
$node0->lNode = $node1;
$node0->rNode = $node2;

------解决方案--------------------
这样写
<br><?php <br />$s = '4 6 8 9 10 12';<br>foreach(explode(' ', $s) as $k=&gt;$v) { //&#21021;&#22987;&#21270;<br>  $t[] = array('w' =&gt; $v, 'v' =&gt; $v); //&#29992;&#20540;&#20316;&#20026;&#26435;&#37325;<br>}<br>HuffmanTree($t);<br>echo DLR($t), PHP_EOL;<br><br>/* &#21704;&#22827;&#26364;&#31639;&#27861; */<br>function HuffmanTree(&amp;$F) {<br>  while(count($F) &gt; 1) {<br>    $r = array();<br>    foreach($F as $item) $r[] = $item['w'];<br>    array_multisort($r, $F);<br>    $t = array('w' =&gt; $F[0]['w']+$F[1]['w'], 'l' =&gt; $F[0], 'r' =&gt; $F[1]);<br>    unset($F[0]);<br>    unset($F[1]);<br>    $F[] = $t;<br>  }<br>  $F = current($F);<br>}<br>/* &#21069;&#24207;&#36941;&#21382; */<br>function DLR($F, $deep=0) {<br>  echo str_repeat("   ", $deep) .'+- ' . $F['w'] . PHP_EOL;//&#25171;&#21360;&#26435;&#37325;<br>  if(isset($F['l'])) DLR($F['l'], $deep+1);<br>  if(isset($F['r'])) DLR($F['r'], $deep+1);<br>}<br>


+- 49
+- 20
+- 10
+- 10
+- 4
+- 6
+- 29
+- 12
+- 17
+- 8
+- 9

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条:手动装配phpunit 下一条:trie 的施用