Step 1: Start at root node 1, find height of left subtree rooted at 2
At node 1 -> going left to node 2
Why: We need to find height of left subtree first to compare with right subtree
Step 2: At node 2, find height of left subtree rooted at 4
At node 2 -> going left to node 4
Why: Continue down left subtree to find its height
Step 3: At node 4, no children, height is 1
Node 4 is leaf -> height = 1
Why: Leaf node height is 1 by definition
Step 4: At node 2, right child is null, height is 0; max height is max(1,0)+1=2
Node 2 height = 2
Why: Height is max of left and right subtree heights plus one for current node
Step 5: At node 1, find height of right subtree rooted at 3
At node 1 -> going right to node 3
Why: Now find height of right subtree to compare
Step 6: At node 3, find height of left subtree rooted at 5
At node 3 -> going left to node 5
Why: Check left child of node 3
Step 7: At node 5, no children, height is 1
Node 5 is leaf -> height = 1
Why: Leaf node height is 1
Step 8: At node 3, find height of right subtree rooted at 6
At node 3 -> going right to node 6
Why: Check right child of node 3
Step 9: At node 6, no children, height is 1
Node 6 is leaf -> height = 1
Why: Leaf node height is 1
Step 10: At node 3, max height is max(1,1)+1=2
Node 3 height = 2
Why: Height is max of left and right subtree heights plus one
Step 11: At root node 1, max height is max(2,2)+1=3
Root node 1 height = 3
Why: Height of tree is max height of subtrees plus one for root