Vì vậy, tôi có một cây định nghĩa làNil Giá trị Tree a -> một trong Haskell
data Tree a = Leaf | Node a (Tree a) (Tree a) deriving Show
Tôi biết tôi có thể xác định lá là lá a. Nhưng tôi thực sự chỉ muốn các nút của tôi có giá trị. Vấn đề của tôi là khi tôi thực hiện tìm kiếm, tôi có chức năng trả về giá trị của loại
Tree a -> a
Vì lá không có giá trị Tôi nhầm lẫn khi nói rằng bạn gặp phải một chiếc lá không làm gì cả. Tôi đã thử nil
, " "
, ' '
, []
không có gì có vẻ hoạt động.
Sửa Mã
data Tree a = Leaf | Node a (Tree a) (Tree a) deriving Show
breadthFirst :: Tree a -> [a]
breadthFirst x = _breadthFirst [x]
_breadthFirst :: [Tree a] -> [a]
_breadthFirst [] = []
_breadthFirst xs = map treeValue xs ++
_breadthFirst (concat (map immediateChildren xs))
immediateChildren :: Tree a -> [Tree a]
immediateChildren (Leaf) = []
immediateChildren (Node n left right) = [left, right]
treeValue :: Tree a -> a
treeValue (Leaf) = //this is where i need nil
treeValue (Node n left right) = n
test = breadthFirst (Node 1 (Node 2 (Node 4 Leaf Leaf) Leaf) (Node 3 Leaf (Node 5 Leaf Leaf)))
main =
do putStrLn $ show $ test
Bạn muốn tìm kiếm một nút có giá trị nhất định? Sau đó, 'Có thể a' có lẽ là một kiểu trả về tốt. – gspr
Không thực hiện thao tác lướt ngang đầu tiên và sau đó in các giá trị mà nó tìm thấy theo thứ tự. Vấn đề là nó đi qua lá và giống như những gì tôi làm, và tôi đã nói không có gì chỉ cần đi vào. – Slowbro
cập nhật với mã – Slowbro