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

php怎么实现二叉树的存储

程序员文章站 2022-04-27 14:25:34
...
php如何实现二叉树的存储?
php怎么实现二叉树的存储
就像上面图片里面所画的一样,我怎么把那一串数字用二叉树存起来?用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) { //初始化<br>
  $t[] = array('w' =&gt; $v, 'v' =&gt; $v); //用值作为权重<br>
}<br>
HuffmanTree($t);<br>
echo DLR($t), PHP_EOL;<br><br>
/* 哈夫曼算法 */<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>
/* 前序遍历 */<br>
function DLR($F, $deep=0) {<br>
  echo str_repeat("   ", $deep) .'+- ' . $F['w'] . PHP_EOL;//打印权重<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

php怎么实现二叉树的存储

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

相关文章

相关视频