───── 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