─────
Trees
─────
Tree structures can be represented in APL in many ways. Two popular methods are
to use array nesting, or "TreeView" style depth and leaf vectors. Functions
→tview← and →tnest← swap between these two styles and →tfmt← takes the nested
representation and renders it as an indented character matrix suitable for disp-
lay in the session.
We can represent a tree as a vector where, at each level, the first item is the
tree node and subsequent items are sub-trees. Leaves are identified by having
depth=1. For example, the following tree:
drink
┌────────┴────────┐
hot cold
┌───┴───┐ ┌───┴───┐
tea coffee milk beer
... might be represented thus:
nested←'drink'('hot' 'tea' 'coffee')('cold' 'milk' 'beer')
disp nested ⍝ Nested format.
┌─────┬────────────────┬────────────────┐
│drink│┌───┬───┬──────┐│┌────┬────┬────┐│
│ ││hot│tea│coffee│││cold│milk│beer││
│ │└───┴───┴──────┘│└────┴────┴────┘│
└─────┴────────────────┴────────────────┘
disp tview nested ⍝ TreeView format.
┌─────────────┬─────────────────────────────────────┐
│0 1 2 2 1 2 2│┌─────┬───┬───┬──────┬────┬────┬────┐│
│ ││drink│hot│tea│coffee│cold│milk│beer││
│ │└─────┴───┴───┴──────┴────┴────┴────┘│
└─────────────┴─────────────────────────────────────┘
display tfmt nested ⍝ Indented format.
┌→─────────────┐
↓drink │
│· hot │
│· · tea │
│· · coffee│
│· cold │
│· · milk │
│· · beer │
└──────────────┘
nested ≡ tnest tview nested ⍝ Full circle
1
See also: tnest tview tfmt span dft BST trav
Back to: contents
Back to: Workspaces