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
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
Translate any binary tree into a binary tree with only a left subtree.
Requirements: (1) no additional storage space can be used for sorting and sorting.
(2) The modified tree is a binary tree with only the left subtree, And the node order is the first traversal of the original binary tree.
Idea: The result is first-order traversal, but the recursion method is post-order traversal.
Class Solution { Public : Void Flatten (treenode * Root ){ If (Root = NULL) Return ; Flatten (Root -> Left); flatten (Root -> Right ); If (Root-> left = NULL) Return ; Treenode * P = root-> Left; While (P-> right) P = p-> Right; P -> Right = root-> Right; root -> Right = root-> Left; root -> Left = Null ;}};
Reprinted please indicate the source http://www.cnblogs.com/double-win/ thank you!