La montre plate est analysée efficacement comme une structure d'arbre
La méthode minimaliste de l'analyse
Ce tableau est analysé comme une structure d'arbre:
Id | Name | ParentId | Order |
---|---|---|---|
1 | 'Node 1' | 0 | 10 |
2 | 'Node 1.1' | 1 | 10 |
3 | 'Node 2' | 0 | 20 |
4 | 'Node 1.1.1' | 2 | 10 |
5 | 'Node 2.1' | 3 | 10 |
6 | 'Node 1.2' | 1 | 20 |
Identification du nœud racine:
Construisez un arbre:
Créez un sous-nœud par récursivement et ajoutez-le au nœud parent correspondant pour construire une arborescence.Pour chaque nœud non-root, utilisez son parentid pour trouver son nœud parent dans le dictionnaire. Ajoutez le nœud comme nœud enfant du nœud parent.
Le pseudo code de cette méthode:
Tableau de fermeture:
Une autre méthode de stockage de la structure des arbres dans la base de données relationnelle consiste à utiliser un tableau de fermeture, qui contient une table distincte, qui contient l'ID de nœud ancestral et la colonne ID de nœud de progéniture. Cela permet des relations de requête faciles.<code>创建字典(table) def 获取根节点(): 根节点 = [] 对于 id, 节点 in 字典.items(): 如果 节点['ParentId'] == 0: 根节点.append(节点) 返回 根节点 def 构建树(根节点): 对于 根节点 in 根节点: 子节点 = [] 对于 id, 节点 in 字典.items(): 如果 节点['ParentId'] == 根节点['Id']: 子节点.append(节点) 子节点.sort(key=lambda x: x['Order']) 根节点['children'] = 子节点 构建树(子节点) def 打印树(根节点): 对于 根节点 in 根节点: 打印(根节点['Name']) 如果 'children' in 根节点: 打印树(根节点['children'])</code>
Embeds:
L'ensemble imbriqué implique les informations de localisation de chaque nœud dans l'arborescence de stockage dans une seule table. Cette méthode permet des requêtes basées sur la portée efficaces des nœuds dans un niveau ou un sous-trace donné.
Conclusion Bien que les exemples fournis à l'aide de tables plats soient utilisés comme entrée, les méthodes proposées sont très adaptées à différentes structures de données et méthodes de stockage. En utilisant une technologie appropriée, vous pouvez analyser efficacement la structure hiérarchique en forme d'arbre et assurer l'intégrité des données et un accès facile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!