To insert a node into a **binary search tree (BST)** while keeping the tree **balanced**, we need to perform the following steps: 1. **Insert the node** in the appropriate place according to the **BST properties** (left child < parent < right child). 2. After insertion, **rebalance the tree** (if necessary) to ensure that it remains balanced. A tree is considered balanced if the height difference between the left and right subtrees of any node is at most 1 (this is the **balanced binary tree** or **AVL tree** property). ### **Given Binary Search Tree**: ``` 10 / \ 5 15 / / \ 2 12 20 ``` ### **Step 1: Insert 4 into the BST** We start by inserting **4** into the BST: - 4 is less than 10, so we move to the left of 10. - 4 is less than 5, so we move to the left of 5. - 4 is greater than 2, so 4 will be placed as the **right child** of 2. After insertion, the tree looks like this: ``` 10 / \ 5 15 / / \ 2 12 20 \ 4 ``` ### **Step 2: Balance the Tree (If Needed)** At this point, the tree is not balanced. Let's check the balance factors of the nodes: - **Node 2** has a left subtree height of 0 and a right subtree height of 1. Its balance factor is `0 - 1 = -1`, which is acceptable. - **Node 5** has a left subtree height of 1 and a right subtree height of 1. Its balance factor is `1 - 1 = 0`, which is balanced. - **Node 10** has a left subtree height of 2 (because of nodes 5, 2, and 4) and a right subtree height of 2 (because of nodes 15, 12, and 20). Its balance factor is `2 - 2 = 0`, which is balanced. Since the tree is balanced at all levels, **no further rebalancing is necessary**. ### **Final Balanced Tree**: The final tree after inserting 4 is: ``` 10 / \ 5 15 / / \ 2 12 20 \ 4 ``` ### **Conclusion**: After inserting 4, the tree remains balanced and no rotations are needed.