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.
(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)¶
āĻāĻĒāϰā§āϰ āϧāĻžāĻĒāĻā§āϞ⧠āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻ āĻŋāϤ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻā§āϰāĻŋ āύāĻŋāĻā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
āĻā§āϰāĻŋ āĻā§āϰāĻžāĻāĻžāϰā§āϏāĻžāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻ āĻŋāĻāϤāĻž āϝāĻžāĻāĻžāĻ (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) āĻāύā§āϝ āĻāĻ āϰā§āĻĒāĻāĻŋ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤

