本文实例讲述了PHP完全二叉树定义与实现方法。分享给大家供大家参考,具体如下:
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
PHP代码实现(暂时实现添加节点、层次遍历节点,删除节点后续更新)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<?php class Node{ public $value ; public $leftNode ; public $rightNode ; } /* 找到空节点 */ function findEmpytNode( $node , $parent = null){ if ( empty ( $node ->value)){ return $node ; } else { if ( empty ( $node ->leftNode->value)){ return $node ->leftNode; } else if ( empty ( $node ->rightNode->value)){ return $node ->rightNode; } else { if ( empty ( $parent ) || $node ->value == $parent ->rightNode->value){ return findEmpytNode( $node ->leftNode, $node ); } else { return findEmpytNode( $parent ->rightNode, $node ); } } } } /* 添加节点 */ function addNode( $node , $value ){ $emptyNode = findEmpytNode( $node ); setNode( $emptyNode , $value ); } /* 设置节点 */ function setNode( $node , $value ){ $node ->value = $value ; $node ->leftNode = new Node(); $node ->rightNode = new Node(); } /* 打印 */ function printTree( $node , $parent = null){ if ( empty ( $node ->value)) return ; echo $node ->leftNode->value; echo $node ->rightNode->value; if ( empty ( $parent ) || $node ->value == $parent ->rightNode->value){ printTree( $node ->leftNode, $node ); } else { printTree( $parent ->rightNode, $node ); } } $head = new Node(); setNode( $head , 1); addNode( $head , 2); addNode( $head , 3); addNode( $head , 4); addNode( $head , 5); addNode( $head , 6); printTree( $head ); |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://blog.csdn.net/mxdzchallpp/article/details/51745780