国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP ClassObject -- 解析PHP實現(xiàn)二叉樹

2024-05-04 23:11:12
字體:
供稿:網(wǎng)友
二叉樹及其變體是數(shù)據(jù)結(jié)構(gòu)家族里的重要組成部分。最為鏈表的一種變體,二叉樹最適合處理需要一特定次序快速組織和檢索的數(shù)據(jù)。

復(fù)制代碼 代碼如下:


<?php
// Define a class to implement a binary tree
class Binary_Tree_Node {
// Define the variable to hold our data:
public $data;
// And a variable to hold the left and right objects:
public $left;
public $right;

// A constructor method that allows for data to be passed in
public function __construct($d = NULL) {
$this->data = $d;
}

// Traverse the tree, left to right, in pre-order, returning an array
// Preorder means that each node's value preceeds its children.
public function traversePreorder() {
// Prep some variables.
$l = array();
$r = array();
// Read in the left and right children appropriately traversed:
if ($this->left) { $l = $this->left->traversePreorder(); }
if ($this->right) { $r = $this->right->traversePreorder(); }

// Return a merged array of the current value, left, and right:
return array_merge(array($this->data), $l, $r);
}
// Traverse the tree, left to right, in postorder, returning an array
// Postorder means that each node's value follows its children.
public function traversePostorder() {
// Prep some variables.
$l = array();
$r = array();
// Read in the left and right children appropriately traversed:
if ($this->left) { $l = $this->left->traversePostorder(); }
if ($this->right) { $r = $this->right->traversePostorder(); }

// Return a merged array of the current value, left, and right:
return array_merge($l, $r, array($this->data));
}
// Traverse the tree, left to right, in-order, returning an array.
// In-order means that values are ordered as left children, then the
// node value, then the right children.
public function traverseInorder() {
// Prep some variables.
$l = array();
$r = array();
// Read in the left and right children appropriately traversed:
if ($this->left) { $l = $this->left->traverseInorder(); }
if ($this->right) { $r = $this->right->traverseInorder(); }

// Return a merged array of the current value, left, and right:
return array_merge($l, array($this->data), $r);
}
}
// Let's create a binary tree that will equal the following: 3
/// /
//h 9
/// /
// Create the tree:6 a
$tree = new Binary_Tree_Node(3);
$tree->left = new Binary_Tree_Node('h');
$tree->right = new Binary_Tree_Node(9);
$tree->right->left = new Binary_Tree_Node(6);
$tree->right->right = new Binary_Tree_Node('a');
// Now traverse this tree in all possible orders and display the results:
// Pre-order: 3, h, 9, 6, a
echo '<p>', implode(', ', $tree->traversePreorder()), '</p>';
// Post-order: h, 9, 6, a, 3
echo '<p>', implode(', ', $tree->traversePostorder()), '</p>';
// In-order: h, 3, 6, 9, a
echo '<p>', implode(', ', $tree->traverseInorder()), '</p>';
?>


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南郑县| 昭觉县| 遂宁市| 稷山县| 深州市| 方正县| 若尔盖县| 宣化县| 云龙县| 东山县| 九龙城区| 湖南省| 志丹县| 新津县| 潼关县| 宣威市| 井研县| 肥西县| 应用必备| 天台县| 凌云县| 聂荣县| 磐安县| 久治县| 安福县| 东城区| 湘西| 灌云县| 双桥区| 南乐县| 罗定市| 井研县| 高邮市| 肥西县| 永宁县| 东阿县| 三亚市| 巫山县| 汕头市| 达尔| 揭西县|