Link Search Menu Expand Document

ყველაზე ახლო ფოთოლი

ხეში, სადაც ყოველ წვეროს შეესაბამება მთელი რიცხვი, იპოვეთ დასაწყისიდან (root) ხის ფოთლებამდე ყველაზე მოკლე გზის სიგრძე. გზის სიგრძე ტოლია მასში შემავალი ხის წვეროების მნიშვნელობების ჯამის. გაითვალისწინეთ რომ ფოთოლი ეწოდება ხის ისეთ წვეროს რომელსაც არცერთი შვილი არ ყავს.

მაგალითად:

      1
     / \
    2   4     =>  5 = 1 + 4
   /
  3

      1
     /|\
    2 6 4     =>  4 = 1 + 2 + 1
   /
  1

ხე წარმოდგენილია როგორც რეკურსიული სია. ხის წვერო წარმოდგება ორ ელემენტიანი სიისგან, სადაც პირველი ელემენტი წარმოადგენს ხის წვეროს მნიშვნელობას ხოლო მეორე ელემენტი არის მიმდინარე წვეროს შვილობილი ხეების შესაბამისი სიების სია. თუ წვეროს არცერთი შვილი არ ყავს მაშინ მეორე ელემენტი არის ცარიელი სია.

ზემოთ ნაჩვენები ხის მაგალითებიდან პირველი წარმოდგება როგორც: (1 ((2 ((3 ()))) (4 ()))) ხოლო მეორე როგორც (1 ((2 ((1 ()))) (6 ()) (4 ())))

ამოხსნა დაწერეთ closest_node.scm ფაილში ხოლო სამაგალითო ტესტები მოცემულია tests.c ფაილში.

Kawa-ს გამოყენება გაუშვით დესკტოპზე არსებული Kawa-ს გამშვები ფაილი. თუ გსურთ დესკტოპზე არსებულ some-dir დირექტორიაში არსებული foo.scm ფაილის ჩატვირთვა ინტერპრეტატორში აკრიფეთ: (load “some-dir/foo.scm”)