में> एक तो मैं एक पेड़ के रूप में परिभाषितट्री के लिए शून्य मूल्य एक - हास्केल
data Tree a = Leaf | Node a (Tree a) (Tree a) deriving Show
मैं जानता हूँ कि मैं पत्ता एक होने के लिए पत्ता को परिभाषित कर सकते हैं। लेकिन मैं वास्तव में सिर्फ अपने नोड्स के मूल्यों को चाहता हूं। मेरी समस्या यह है कि मैं प्रकार
Tree a -> a
की वापसी मान समारोह है के बाद से लीफ़्स कोई मूल्य नहीं मैं कैसे कहने के लिए उलझन में हूँ जब मैं कोई खोज करते है अगर आप एक पत्ता कुछ नहीं कर मुठभेड़। मैंने nil
, " "
, ' '
, []
कुछ भी काम करने की कोशिश नहीं की।
संपादित कोड
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
आप एक निश्चित मूल्य के साथ नोड खोजना चाहते हैं? फिर 'शायद ए' शायद एक अच्छा रिटर्न प्रकार है। – gspr
कोई भी चौड़ाई पहले ट्रैवर्सल नहीं कर रहा है और उसके बाद मूल्यों को प्रिंट कर रहा है। समस्या यह है कि यह पूरे पत्ते में आता है और जैसा कि मैं करता हूं, और मैं कुछ भी कहना नहीं चाहता था। – Slowbro
कोड – Slowbro