Skip to content

Tree Traversing

You can Check these References for better understanding:
Step By Step āĻĻ⧇āĻ–āĻžāύ⧋ āφāϛ⧇ āĻāĻ–āĻžāύ⧇āσ
â–ļī¸ Simplest Binary Tree Traversal trick for preorder inorder postorder

So in summary, always go from the root in counterclockwise direction around the tree.
- For Pre-Order, print the nodes as you visit them for the first time.
- For In-Order, print the nodes only when you visit them for the second time.
- For Post-order, print the nodes when you visit them for the last time.

Shortcut formula:
The Gravity Drop Method (Inorder)

Problem Sets:
alt text

(a*b)/(c+d) āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻŸā§āϰāĻŋāϰ āϧāĻžāϰāĻŖāĻž (Concept of Expression Tree)

āĻāĻ•āϟāĻŋ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻŸā§āϰāĻŋ (Expression Tree) āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻŸā§āϰāĻŋ āϝāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŦā§€āϜāĻ—āĻžāĻŖāĻŋāϤāĻŋāĻ• āϰāĻžāĻļāĻŋāϕ⧇ (algebraic expressions) āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤ āĻāχ āĻŸā§āϰāĻŋāϰ āĻ—āĻ āύ⧇, āĻ…āĻĒāĻžāϰ⧇āϟāϰāϗ⧁āϞ⧋ (operators) āϝ⧇āĻŽāύ āϝ⧋āĻ—, āĻŦāĻŋāϝāĻŧā§‹āĻ—, āϗ⧁āĻŖ, āĻ­āĻžāĻ— āϏāĻŦāϏāĻŽāϝāĻŧ āχāĻ¨ā§āϟāĻžāϰāύāĻžāϞ āύ⧋āĻĄ (internal nodes) āĻŦāĻž āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āύ⧋āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ āĻ…āĻĒāĻžāϰ⧇āĻ¨ā§āĻĄ (operands) āĻŦāĻž āϚāϞāĻ•āϗ⧁āϞ⧋ āϏāĻŦāϏāĻŽāϝāĻŧ āϞāĻŋāĻĢ āύ⧋āĻĄ (leaf nodes) āĻŦāĻž āĻĒā§āϰāĻžāĻ¨ā§āϤāĻŋāĻ• āύ⧋āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻ•āϰ⧇āĨ¤

āĻĒā§āϰāĻĻāĻ¤ā§āϤ āϰāĻžāĻļāĻŋ (a*b)/(c+d) āĻāϰ āϜāĻ¨ā§āϝ āĻŸā§āϰāĻŋ āĻ—āĻ āύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻĒā§āϰāĻŋāϏāĻŋāĻĄā§‡āĻ¨ā§āϏ (operator precedence) āĻŦāĻž āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ āĻ…āĻ—ā§āϰāĻžāϧāĻŋāĻ•āĻžāϰ⧇āϰ āύāĻŋāϝāĻŧāĻŽ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤


āĻŸā§āϰāĻŋ āĻ—āĻ āύ⧇āϰ āϧāĻžāĻĒāϏāĻŽā§‚āĻš (Construction Steps)

āϧāĻžāĻĒ ā§§: āĻĒā§āϰāϧāĻžāύ āϰ⧁āϟ āύ⧋āĻĄ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ (Identifying the Root Node)

āĻāĻ–āĻžāύ⧇ āĻ­āĻžāĻ— āĻ…āĻĒāĻžāϰ⧇āϟāϰāϟāĻŋ / āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϰāĻžāĻļāĻŋāϟāĻŋāϕ⧇ āĻĻ⧁āϟāĻŋ āĻĒā§āϰāϧāĻžāύ āĻ…āĻ‚āĻļ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇āĨ¤ āĻāχ āĻ•āĻžāϰāϪ⧇ / āĻ…āĻĒāĻžāϰ⧇āϟāϰāϟāĻŋ āĻĒ⧁āϰ⧋ āĻŸā§āϰāĻŋāϰ āĻĒā§āϰāϧāĻžāύ āϰ⧁āϟ āύ⧋āĻĄ (main root node) āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻŦāĻžāϰ āωāĻĒāϰ⧇ āĻŦāϏāĻŦ⧇āĨ¤

āϧāĻžāĻĒ ā§¨: āĻŦāĻžāĻŽ āϏāĻžāĻŦ-āĻŸā§āϰāĻŋ āĻ—āĻ āύ (Designing the Left Subtree)

āϰāĻžāĻļāĻŋāϟāĻŋāϰ āĻŦāĻžāĻŽ āĻ…āĻ‚āĻļ⧇ āĻŦāĻ¨ā§āϧāύ⧀āϰ āϭ⧇āϤāϰ āφāϛ⧇ (a*b)āĨ¤ āĻāĻ–āĻžāύ⧇ āϗ⧁āĻŖ āĻ…āĻĒāĻžāϰ⧇āϟāϰ * āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āϟ āύ⧋āĻĄ āĻšāĻŦ⧇āĨ¤ āĻāχ * āύ⧋āĻĄā§‡āϰ āĻŦāĻžāĻŽ āϚāĻžāχāĻ˛ā§āĻĄ (left child) āĻšāĻŋāϏ⧇āĻŦ⧇ a āĻāĻŦāĻ‚ āĻĄāĻžāύ āϚāĻžāχāĻ˛ā§āĻĄ (right child) āĻšāĻŋāϏ⧇āĻŦ⧇ b āϝ⧁āĻ•ā§āϤ āĻšāĻŦ⧇āĨ¤

āϧāĻžāĻĒ ā§Š: āĻĄāĻžāύ āϏāĻžāĻŦ-āĻŸā§āϰāĻŋ āĻ—āĻ āύ (Designing the Right Subtree)

āϰāĻžāĻļāĻŋāϟāĻŋāϰ āĻĄāĻžāύ āĻ…āĻ‚āĻļ⧇ āĻŦāĻ¨ā§āϧāύ⧀āϰ āϭ⧇āϤāϰ āφāϛ⧇ (c+d)āĨ¤ āĻāĻ–āĻžāύ⧇ āϝ⧋āĻ— āĻ…āĻĒāĻžāϰ⧇āϟāϰ + āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āϟ āύ⧋āĻĄ āĻšāĻŦ⧇āĨ¤ āĻāχ + āύ⧋āĻĄā§‡āϰ āĻŦāĻžāĻŽ āϚāĻžāχāĻ˛ā§āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ c āĻāĻŦāĻ‚ āĻĄāĻžāύ āϚāĻžāχāĻ˛ā§āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ d āϝ⧁āĻ•ā§āϤ āĻšāĻŦ⧇āĨ¤


āϚāĻŋāĻ¤ā§āϰāĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ (Diagrammatic Representation)

āωāĻĒāϰ⧇āϰ āϧāĻžāĻĒāϗ⧁āϞ⧋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ āĻ—āĻ āĻŋāϤ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻŸā§āϰāĻŋ āύāĻŋāĻšā§‡ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋:

       /
     /   \
    *     +
   / \   / \
  a   b  c  d

āĻŸā§āϰāĻŋ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻ āĻŋāĻ•āϤāĻž āϝāĻžāϚāĻžāχ (Verification via Tree Traversals)

āφāĻŽāĻžāĻĻ⧇āϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻŸā§āϰāĻŋāϟāĻŋ āϏāĻ āĻŋāĻ• āĻšā§Ÿā§‡āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ ā§ŠāϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻŸā§āϰāĻŋ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ (tree traversal) āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤

ā§§. āχāύāĻ…āĻ°ā§āĻĄāĻžāϰ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ (Inorder Traversal: Left, Root, Right)

  • āĻ•ā§āϰāĻŽ (Sequence): a * b / c + d
  • āĻĢāϞāĻžāĻĢāϞ: āĻ—āĻžāĻŖāĻŋāϤāĻŋāĻ• āύāĻŋāϝāĻŧāĻŽ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻŦāĻ¨ā§āϧāύ⧀ āĻŦāĻž āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āĻĨ⧇āϏāĻŋāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āĻāϟāĻŋ āφāĻŦāĻžāϰ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽā§‚āϞ āχāύāĻĢāĻŋāĻ•ā§āϏ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ (infix expression) (a*b)/(c+d) āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āĻĻā§‡ā§ŸāĨ¤

⧍. āĻĒā§āϰāĻŋāĻ…āĻ°ā§āĻĄāĻžāϰ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ (Preorder Traversal: Root, Left, Right)

  • āĻ•ā§āϰāĻŽ (Sequence): / * a b + c d
  • āĻĢāϞāĻžāĻĢāϞ: āĻāχ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻžāĻĒā§āϤ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏāϟāĻŋ āĻšāϞ⧋ āĻĒā§āϰāĻĻāĻ¤ā§āϤ āϰāĻžāĻļāĻŋāϰ āĻĒā§āϰāĻŋāĻĢāĻŋāĻ•ā§āϏ āύ⧋āĻŸā§‡āĻļāύ (prefix notation) āĻŦāĻž āĻĒā§‹āϞāĻŋāĻļ āύ⧋āĻŸā§‡āĻļāύāĨ¤

ā§Š. āĻĒā§‹āĻ¸ā§āϟāĻ…āĻ°ā§āĻĄāĻžāϰ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ (Postorder Traversal: Left, Right, Root)

  • āĻ•ā§āϰāĻŽ (Sequence): a b * c d + /
  • āĻĢāϞāĻžāĻĢāϞ: āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§‹āĻ¸ā§āϟāĻĢāĻŋāĻ•ā§āϏ āύ⧋āĻŸā§‡āĻļāύ (postfix notation) āĻŦāĻž āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻĒā§‹āϞāĻŋāĻļ āύ⧋āĻŸā§‡āĻļāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĄāĻŋāϜāĻžāχāύ⧇ āϝ⧇āϕ⧋āύ⧋ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āχāĻ­āĻžāĻ˛ā§ā§Ÿā§‡āĻļāύ āĻŦāĻž āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ⧇āϰ (evaluation) āϜāĻ¨ā§āϝ āĻāχ āϰ⧂āĻĒāϟāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤