AlgoMaster Logo

Flatten Binary Tree to Linked List

tree=[1, 2, 5, 3, 4, null, 6]
1public void flatten(TreeNode root) {
2    TreeNode current = root;
3
4    while (current != null) {
5        if (current.left != null) {
6            // Find rightmost node in left subtree
7            TreeNode predecessor = current.left;
8            while (predecessor.right != null) {
9                predecessor = predecessor.right;
10            }
11
12            // Connect predecessor's right to current's right
13            predecessor.right = current.right;
14
15            // Move left subtree to right
16            current.right = current.left;
17            current.left = null;
18        }
19
20        // Move to next node
21        current = current.right;
22    }
23}
0 / 15
R125346currentpredecessor