PHP クラス&オブジェクト -- PHP を解析してバイナリ ツリーを実装する_PHP チュートリアル
Jul 21, 2016 pm 03:03 PM
amp
class
object
php
バリエーション
成し遂げる
家族
データ構造
はい
木
の
解析する
重要
バイナリ ツリーとそのバリアントは、データ構造ファミリーの重要な部分です。リンク リストの一種であるバイナリ ツリーは、特定の順序で迅速に整理して取得する必要があるデータの処理に最適です。
コードをコピーします コードは次のとおりです:
<?php
// バイナリツリーを実装するクラスを定義します
class Binary_Tree_Node {
// データを保持する変数を定義します:
public $data;
// そして、左と右のオブジェクトを保持する変数:
public $left;
public $right;
// データを渡すことができるコンストラクター メソッド
public function __construct($d = NULL) {
$this->data = $d;
}
// 事前順序でツリーを左から右に走査し、配列を返します
// 事前順序とは、各ノードの値がその子よりも前にあることを意味します。
public function traversePreorder() {
// いくつかの変数を準備します。
$l = array();
$r = array();
// 適切にトラバースされた左右の子を読み取ります:
if ($this->left) { $l = $this->left->traversePreorder (); }
if ($this->right) { $r = $this->right->traversePreorder(); }
// 現在の値の左と右のマージされた配列を返します:
return array_merge(array($this->data), $l, $r);
}
// ポストオーダーで左から右にツリーをトラバースし、配列を返します
// ポストオーダーとは、各ノードの値がその子に従うことを意味します。
public function traversePostorder() {
// いくつかの変数を準備します。
$l = array();
$r = array();
// 適切にトラバースされた左右の子を読み取ります:
if ($this->left) { $l = $this->left->traversePostorder( ); }
if ($this->right) { $r = $this->right->traversePostorder(); }
// 現在の値の左と右のマージされた配列を返します:
return array_merge($l, $r, array($this->data));
}
// ツリーを左から右に順番に走査し、配列を返します。
// 順番とは、値が左の子、次に
// ノード値、次に右の子の順に並べられることを意味します。
public function traverseInorder() {
// いくつかの変数を準備します。
$l = array();
$r = array();
// 適切にトラバースされた左右の子を読み取ります:
if ($this-> left) { $l = $this->left->traverseInorder(); }
if ($this->right) { $r = $this->right->traverseInorder(); }
// 現在の値の左と右のマージされた配列を返します:
return array_merge($l, array($this->data), $r);
}
}
// 次のようなバイナリ ツリーを作成しましょう: 3
// / /
// h 9
// / /
// ツリーを作成します: 6 a
$tree = new Binary_Tree_Node(3);
$tree->left = 新しい Binary_Tree_Node('h');
$tree->right = 新しい Binary_Tree_Node(9);
$tree->right->left = 新しい Binary_Tree_Node(6);
$tree ->right->right = new Binary_Tree_Node('a');
// 次に、このツリーをすべての可能な順序で走査し、結果を表示します:
// 事前順序: 3、h、9、6、a
echo '<p>', implode(', ', $tree->traversePreorder()), '</p>';
// ポストオーダー: h, 9, 6, a, 3
echo '<p>', implode(', ', $tree->traversePostorder()), '</p>';
// 順番: h, 3, 6, 9, a
echo ' <p>', implode(', ', $tree->traverseInorder()), '</p>';
?>
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7142
9


Java チュートリアル
1534
14


Laravel チュートリアル
1257
25


PHP チュートリアル
1205
29


CakePHP チュートリアル
1155
46



Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
