| inductive TreeNode where | |
| | mkLeaf (name : String) : TreeNode | |
| | mkNode (name : String) (children : List TreeNode) : TreeNode | |
| open TreeNode in def treeToList (t : TreeNode) : List String := | |
| match t with | |
| | mkLeaf name => [name] | |
| | mkNode name children => name :: List.flatten (children.map treeToList) | |
| termination_by t |