breadth:(list(tree(int)))list(int) snoc:(diamond,list(tree(int)),tree(int))list(tree(int)) fun snoc(d,l,t) = match l with nil => cons(d,t,nil(tree(int))) |cons(d1,t1,q) => cons(d1,t1,snoc(d,q,t)) fun breadth(q) = match q with nil => nil(int) |cons(d,t,q) => match t with leaf(a) => cons(d,a,breadth(q)) |node(d1,d2,a,l,r) => cons(d,a,breadth(snoc(d2,snoc(d1,q,l),r)))