2011-12-27 3 views

risposta

27

Ecco alcune librerie che si possono trovare utili:

arboreal.js, un "micro-libreria per l'attraversamento e la manipolazione di strutture di dati ad albero" in node.js e il browser.

buckets, una "libreria di strutture dati completa, completamente testata e documentata" che include BST, un mucchio e un mucchio di altri extra.

+1

Peccato arborea non sembra più mantenuto, 3 richieste di pull in attesa di 2 anni. le benne sembrano davvero buone ma a parte ciò non forniscono realmente strutture di dati dell'albero – Overdrivr

+2

TreeModel come indicato da @JNS sembra essere l'opzione migliore. –

+1

Su un progetto a cui ho lavorato per l'ONG ruandese Solid Africa, la struttura ad albero era una parte importante per tenere traccia delle spese e delle donazioni (le spese o le donazioni appartenevano a una categoria, cibo, cure speciali ecc.). Sulla base di questa esperienza ho sviluppato il [pacchetto tree-util node] (https://www.npmjs.com/package/tree-util). Spero che possa essere utile quando vuoi lavorare con strutture ad albero. Soprattutto se si riferiscono i dati alle strutture dell'albero. –

4

Vorrei aver già visto quella soluzione, perché quelle librerie sembrano utili!

Ecco uno che ho messo insieme che è un'alternativa. Indicato per attraversare, manipolare e caricare strutture gerarchiche di alberi da tabelle piatte autoreferenziali, non per alberi binari bilanciati.

DataStructures.Tree e related blog post

22

due librerie da aggiungere alla lista sono:

  • t.js - sembra essere un bene per l'attraversamento;
  • TreeModel - Manipolazione e attraversamento.

disclaimer: ho costruito TreeModel

4

Non sono sicuro di che cosa i vostri bisogni sono quindi questo è un salto nel buio. Io di solito uso (per il peso leggero Javascript) un array di array, in questo modo:

node[i] = [parent, firstChild, secondChild, ... nthChild]; 
2

provare il DOM

var o = document.createElement('WHAT_YOU_WANT') 
// o.appendChild(...) 
+10

Si prega di aggiungere alcune spiegazioni sul perché questo codice aiuti l'OP. Ciò contribuirà a fornire una buona risposta. Vedi [risposta] per maggiori informazioni. –

+4

Non sono d'accordo con questa risposta. Il DOM è una struttura ad albero, compatibile con XML e JSON. Rimozione di nodi, aggiunta di bambini, bambini che contengono bambini. Aggiungi un po 'di CSS e puoi facilmente creare una struttura a treeview. Inoltre la domanda non specifica l'aspetto del widget che vogliono. –

+0

Questa è una buona risposta, perché è downvoted? –

0

ho scritto uno dei dati semplici orientate biblioteca albero chiamato data-tree. È possibile utilizzare questo per creare, attraversare e cercare albero in moda BFS/DFS. Puoi anche importare/esportare i dati dalla struttura ad albero. Checkout la documentazione dettagliata a: http://cchandurkar.github.io/Data-Tree/

di usarlo in un nodo npm install data-tree

+0

Le richieste di raccomandazione per risorse o strumenti fuori sede sono off-topic su Stack Overflow. Se rispondi, rinforzi specificamente la convinzione che Stack Overflow sia un buon posto per rispondere a tali domande. Non è. Si prega di non rispondere a queste domande, anche se si conosce una buona risposta in quanto la maggior parte delle risposte sarà fortemente supponente ("personalmente mi piace ..."). È possibile aprire il dialogo flag sulla domanda e vedere il motivo di chiusura per intero nella categoria ** off-topic **, o nella [help/on-topic]. Non dovresti nemmeno rispondere in un commento, poiché l'effetto è simile a una risposta reale. –

+0

@Kyll, grazie per averlo portato alla mia attenzione. Non voglio rafforzare alcuna convinzione del genere. Sarebbe appropriato se elimino la mia risposta? –