אוג.06

עקוף איטרטיבי על פי סדר של עץ בינארי

עקוף איטרטיבי על פי סדר של עץ בינארי

יש לעקוף עץ בינארי ללא רקורסיה. בכל צומת יש לבצע פונקציה שנותנים על ערך של צומת.

  1. public static void traverse(BinaryTree tree, Action<BinaryTree> callback) {
  2. BinaryTree prev = null;
  3. BinaryTree curr = tree;
  4. while (curr != null) {
  5. BinaryTree next;
  6. if(prev == null || prev == curr.parent) { // from top to bottom
  7. if(curr.left != null)
  8. next = curr.left;
  9. else {
  10. callback(curr);
  11. next = curr.right != null ? curr.right : curr.parent;
  12. }
  13. } else if (prev == curr.left) { //from left bottom
  14. callback(curr);
  15. next = curr.right != null ? curr.right : curr.parent;
  16. } else { //from right bottom
  17. next = curr.parent;
  18. }
  19. prev = curr;
  20. curr = next;
  21. }
  22. }
  23.  
  24. public class BinaryTree {
  25. public int value;
  26. public BinaryTree left;
  27. public BinaryTree right;
  28. public BinaryTree parent;
  29.  
  30. public BinaryTree(int value) {
  31. this.value = value;
  32. }
  33.  
  34. public BinaryTree(int value, BinaryTree parent) {
  35. this.value = value;
  36. this.parent = parent;
  37. }
  38. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה