問題61A

与えられた二分木の葉ノードの値をリストとして返しなさい。

import LeanBook.Problem61

def leaves {α : Type} (t : BinTree α) : List α :=
  match t with
  | .empty => []
  | .node v .empty .empty => [v]
  | .node _ left right =>
    leaves left ++ leaves right

#guard leaves [tree| 1] = [1]
#guard leaves [tree| 1 * (2 + 3)] = [2, 3]
#guard leaves [tree| 1 * (2 * (3 + 4) + 5 * (6 + 7))] = [3, 4, 6, 7]