php 实现二叉树的最大深度_PHP 实现二叉树
1 <?php
2
3 /*----------------
4 + 二叉樹(shù)
5 ----------------*/
6
7 class BTree
8 {
9 // 數(shù)據(jù)域
10 protected $data;
11 // 左子樹(shù)
12 protected $leftNode;
13 // 右子樹(shù)
14 protected $rightNode;
15
16 public function __construct($data = 0)
17 {
18 $this->data = $data;
19 }
20
21 /**
22 * @param object $leftNode
23 */
24 public function setLeftNode(BTree $leftNode = null)
25 {
26 $this->leftNode = $leftNode;
27 }
28
29 /**
30 * @param object $rightNode
31 */
32 public function setRightNode(BTree $rightNode = null)
33 {
34 $this->rightNode = $rightNode;
35 }
36
37 public function getLeftNode()
38 {
39 // 判斷自己瞎寫(xiě)的,當(dāng)訪問(wèn)子節(jié)點(diǎn)不存在的時(shí)候,就重新實(shí)例化當(dāng)前節(jié)點(diǎn),data默認(rèn)賦值為0,表示空節(jié)點(diǎn)。反正能夠表示子節(jié)點(diǎn)不存在哈哈
40 if (!isset($this->leftNode)) {
41 return new self;
42 }
43 return $this->leftNode;
44 }
45
46 public function getRightNode()
47 {
48 if (!isset($this->leftNode)) {
49 return new self;
50 }
51 return $this->rightNode;
52 }
53
54 public function getData()
55 {
56 return $this->data;
57 }
58 }
59
60 $rootNode = new BTree(1);
61 $zuo1Node = new BTree(2);
62 $you1Node = new BTree(3);
63 $zuo21Node = new BTree(4);
64 $you21Node = new BTree(5);
65 $zuo22Node = new BTree(6);
66 $rootNode->setLeftNode($zuo1Node);
67 $rootNode->setRightNode($you1Node);
68 $zuo1Node->setLeftNode($zuo21Node);
69 $zuo1Node->setRightNode($you21Node);
70 $you1Node->setLeftNode($zuo22Node);
71 echo ‘訪問(wèn)的節(jié)點(diǎn)不存在時(shí),返回空,0表示空節(jié)點(diǎn),或者設(shè)置為null也行.
‘;
72 print_r($rootNode->getLeftNode()->getLeftNode()->getRightNode()->getData());
73 echo "
訪問(wèn)存在的節(jié)點(diǎn),可以正常獲取數(shù)據(jù)
";
74 print_r($rootNode->getLeftNode()->getRightNode()->getData());
總結(jié)
以上是生活随笔為你收集整理的php 实现二叉树的最大深度_PHP 实现二叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php7.0康乐安装_Linux环境PH
- 下一篇: python中的itertools_在p