मेरे पास एक पेड़ है जो नेस्टेड वेक्टर के रूप में दर्शाया गया है। मैं पेड़ों के लिए indexed
, इस तरह प्रत्येक नोड के सूचकांक दिखाने का एक सामान्यीकरण करना चाहते हैं,नोड्स संपादित करने के लिए clojure.zip के साथ पोस्टऑर्डर पेड़ ट्रैवर्सल
(visit 42); => [0 42]
(visit [6 7]); => [0
; [[0 6]
; [1 7]]]
अनुभवहीन कार्यान्वयन clojure.zip सीधे (as already asked here)
(defn visit [tree]
(loop [loc (vector-zip tree)]
(if (end? loc)
(root loc)
(recur
(next (edit loC#(conj
[(count (lefts loc))]
%)))))))
का प्रयोग करेंगे लेकिन clojure.zip/next
साथ आवर्ती एक प्रीऑर्डर ट्रैवर्सल करता है, जिसके परिणामस्वरूप इस मामले में एक अनंत लूप होता है (अवांछित नोड conj
एड [:found]
वेक्टर असीमित रूप में) प्राप्त करते हैं। एक और दृष्टिकोण clojure.walk/postwalk
का उपयोग करेगा, लेकिन यह सूचकांक जैसे संरचनात्मक जानकारी प्रदान नहीं करता है।
आप इसे कैसे कार्यान्वित करेंगे? क्या ज़िप के लिए postorder-next
है जो इसे तुरंत हल करेगा?
फिर से आपके द्वारा ठोस जवाब पढ़ने में खुशी हुई –