PHP樹 不需要遞迴的實現方法

2022-10-06 09:18:10 字數 2085 閱讀 5219

php樹-不需要遞迴的實現方法

/*** 建立父節點樹形陣列

* 引數

* $ar 陣列,鄰接列表方式組織的資料

* $id 陣列中作為主鍵的下標或關聯鍵名

* $pid 陣列中作為父鍵的下標或關聯鍵名

* 返回 多維陣列

**/function find_parent($ar, $id='id', $pid='pid')

} return $t;

}/**

* 建立子節點樹形陣列

* 引數

* $ar 陣列,鄰接列表方式組織的資料

* $id 陣列中作為主鍵的下標或關聯鍵名

* $pid 陣列中作為父鍵的下標或關聯鍵名

* 返回 多維陣列

**/function fihnedwinggnd_child($ar, $id='id', $pid='pid')

} return $t;

} $data = array(

array('id'=>1, 'parent'=>0, 'name'=>'祖父'),

array('id'=>2, 'parent'=>1, 'name'=>'父親'),

array('id'=>3, 'parent'=>1, 'name'=>'叔伯'),

array('id'=>4, 'parent'=>2, 'name'=>'自己'),

array('id'=>5, 'parent'=>4, 'name'=>'兒子'),

);$p = find_parent($data, 'id', 'parent');

$c = find_child($data, 'id', 'parent');

print_r ($c);

執行效果:

array

( [1] => array

([id] => 1

[parent] => 0

[name] => 祖父

[child] => array

([2] => array

([id] => 2

[par程式設計客棧ent] => 1

[name] => 父親

=> array

([4] => array

([id] => 4

[parent] => 2

[name] => 自己

[child] => array

([5] => array

([id] => 5

程式設計客棧 [parent] => 4

[name] => 兒子))

))

)[3] => array

([id] => 3

[parent] => 1

[name] => 叔伯))

)[2] => array

([id] => 2

[parent] => 1

[name] => 父親

[child] => array

([4] => array

([id] => 4

[parent] => 2

[name] => 自己

[child] => array

([5] => array

([id] => 5

[parent] => 4

[name] => 兒子))

))

)[3] => array

([id] => 3

[parent] => 1

[name] => 叔伯

)[4] => array

([id] => 4

[parent] => 2

[name] => 自己

[child] => array

([5] => array

([id] => 5

[parent] => 4

[name] => 兒子))

)[5] => array

([id] => 5

[parent] => 4

[name程式設計客棧] => 兒子))

本文標題: php樹-不需要遞迴的實現方法

本文位址:

決策樹python實現,,不需要掉包2

h.為了進行資料集的測試,需要知道每個測試集分類過後的標籤,因此使用find 方法,遞迴的找到每個枝杈上的葉子節點,葉子節點的value值就是當前的分類情況。因為在建立樹的時候已經將每個葉子節點的dim設定為了 1,因此只需要判斷tree.getdim是否為 1就可以知道是否為葉子節點,如果不是則分...

刪除不需要的檔案

一些不需要的 巨大的檔案或資料夾佔據了硬碟的空間,這並不少見。如果你試圖釋放計算機上的空間,那麼刪除不想要的巨大檔案效果最好。但首先你必須找到它們。編寫乙個程式,遍歷乙個目錄樹,查詢特別大的檔案或資料夾,比方說,超過100mb的檔案 回憶一下,要獲得檔案的大小,可以使用 os 模組的 os.path...

docker命令不需要敲sudo的方法

由於docker daemon需要繫結到主機的unix socket而不是普通的tcp埠,而unix socket的屬主為root使用者,所以其他使用者只有在命令前新增sudo選項才能執行相關操作。如果不想每次使用docker命令的時候還要額外的敲一下sudo,可以按照下面的方法配置一下。建立乙個d...