Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / 2 5 /\ 3 4 6
The flattened tree should look like:
1 2 3 4 5 6
The approximate meaning of this question is to put the two-fork tree in place by sequential traversal sequence. For example, the ordinal traversal sequence of a two-fork tree is 1,2,3,4,5,6. Then, in tandem with the tree structure, is the binary tree below.
public void Flatten (TreeNode root) { if (root = null) return; TreeNode left = Root.left; TreeNode right = Root.right; Root.left = null; Flatten (left); Flatten (right); Root.right = left; TreeNode cur = root; while (cur.right! = null) cur = cur.right; Cur.right = right; }
The code is very straightforward, but it's not a good thought. Remember that the tree is due to its own recursive nature (as is the case with his definition). So, it's very good to handle it in a recursive way.
The general processing mode of the sensory tree is:
dispose of left; handle right; splice with Root.
Of course, the above is a sequential traversal, so the tree processing mode is basically the same as the tree traversal mode, basically is to transform three depth traversal and a hierarchical traversal algorithm. Remember, remember, remember!!!
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Leetcode-flatten Binary Tree to Linked List