Flatten binary tree to linked list total accepted: 25034 total submissions: 88947my submissions
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / 2 5 / \ 3 4 6
The flattened tree shoshould look like:
1 2 3 4 5 6
Click to show hints.
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
Change a binary tree into a linked list.
Train of Thought: DFS
It can be noted that in the linked list, the next node of each node is the next node in the binary tree first traversal, so the problem is converted to the first traversal.
Complexity: time O (N), Space O (log n)
TreeNode *cur;void flatten(TreeNode *root) {if(!root) return;TreeNode *left = root->left;TreeNode *right = root->right;if(cur){cur->left = NULL;cur->right = root;}cur = root;flatten(left);flatten(right);}
Leetcode DFS flatten binary tree to linked list