A ''tree'' is an acyclic directed-[graph] [data structure] where one node (the root) has no predecessor, and all other nodes have exactly one predecessor. Trees can be used, e.g., for representing the result in syntax parsing. An [XML] document is structured as a tree. ** See Also ** [Data Format]: Includes a list of formats for tree-like data. [Decision Trees]: [deep list]: A standard Tcl list in which each single value is encoded as a list containing only one item, and each sequence of values is a list containing more than one item. This makes it possible to differentiate e.g., the single value `one two three` from a list containing the values `one`, `two`, and `three`. [What's wrong with the tree widgets?]: [https://groups.google.com/forum/#!topic/comp.lang.tcl/7A1BjFVsgJE%|%Best Tree Widget], [comp.lang.tcl], 2009-03-11: A discussion between Martyn, Ruediger, and Alexander ** Types of Trees ** [RBTree]: red-black tree data type ** Implementations ** [Tcllib struct tree]: [Containers], by Iain B. Findleton: [ODIE]: Includes tools for data tree maintenance [tdom]: An implementatio of the [DOM]. [Tree Objects]: discussed by [Clif Flynt] [Various useful Tcl packages (Rempel)]: Includes some tree operation packages [A Tree class using TclOO], by [Tom Krehbiel]: [An experimental tree structure], by [Marco Maggi] : [Simple tree structure], by [Rui Lopes%|%rui]: [ycl%|%ycl list deep], by [PYK]: An implementation of a [deep list]. ** Widgets ** [BWidget::Tree]: A tree widget. More accessible for beginners. Featurs edit capabilities. [TkTreeCtrl]: A multicolumn, hierarchical listbox widget. Complex for beginners. [Hipp miscellaneous widgets]: Includes some tree widgets. [mtree widget]: [BLT]: [Tix]: [ClassyTk]: [incr widgets]: Includes a ''hierarchy'' widget [mkWidgets]: [PRS Open Source Software]: [Zinc]: [http://oomadness.tuxfamily.org/p-treewidget.php%|%TreeWidget]: A pure-[Python] tree widget for [Tkinter] [Tk Tree Widget in C++]: [tkgcv]: [hierarchy]: [Tree Table]: born2net's [Iwidgets] version of Hipp's tree widget: [Tree Widget], by Brighton: An [Iwidgets] tree widget. [Tree widget], by Mutlu: An [Iwidgets] version tree widget: Pryce's itk widget base class: [tktree]: [GRIDPLUS]: Includes a basic scrollable tree widget [A Minimal Tree Widget]: [gnocl::tree]: ** Browsers ** [A little RSS browser]: [A little XML browser], by RS: [Tree nodes in motion]: Move nodes on a [Bwidget::Tree%|%Bwidget tree]. [LemonTree]: [Trees as nested lists]: An exploration of both structural approaches for trees, along with some simple graphical interfaces. [Displaying Tree Hierarchy with Incremental Node Numbering]: ** Techniques ** [Simple tree layout], by [Richard Suchenwirth]: How to display a tree structure on a canvas. ** Visualizations ** [Pythagoras Tree]: ** description ** [AMG]: A tree is sometimes called a DAG because it is a directed acyclic graph. I find this to be a useful mnemonic. [NEM]: Well, all trees are DAGs, but not all DAGs are trees. [AMG]: Yes, quite right; see the other tree properties listed in the first line of this page. ---- [LV] In the following text, I notice a number of cases where GUI widget sets have some sort of '''tree''' widget. In each of these cases, is the data structure intermingled with the data representation? Seems a shame that someone doesn't just build a graphically viewable widget that depends on a data structure that is separate. That way, someone could do work with one piece of code, and then, in other pieces, display that data. Seems like a natural method of developing and maintaining code.... <> Arts and Crafts of Tcl-Tk Programming | Command | tcllib | struct | Data Structure