Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α22.7 · Διάσχιση για αποτιμητή εκφράσεων

Διαλέξεις 21–22: Δέντρα, διαφάνεια 29 (διάλεξη 21: διαφάνεια 51) · Δυσκολία ★★☆ · short-answer · Κεφάλαια: 22, 21

Θέλω να γράψω έναν αποτιμητή εκφράσεων (calculator / evaluator / interpreter). Ποια διάσχιση θα χρησιμοποιήσω;

Το δέντρο της διαφάνειας έχει ρίζα +· το αριστερό παιδί του είναι * (με παιδιά 2 και 9) και το δεξί είναι 1.

flowchart TD
  P(("+")) --> M(("*"))
  P --> O(("1"))
  M --> T(("2"))
  M --> N(("9"))

Υπόδειξη

Για να υπολογίσετε τον τελεστή ενός κόμβου χρειάζεστε ήδη τις τιμές των δύο υποδέντρων του. Ποια από τις τρεις διασχίσεις (pre-order, in-order, post-order) επεξεργάζεται τον κόμβο αφού έχει τελειώσει με τα παιδιά του;

Αριθμός στον οδηγό: Α22.7 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec22-expression-evaluator · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec22-expression-evaluator.html · Markdown (GitHub)