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
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ void flatten(struct TreeNode* root) { struct TreeNode *tmp = NULL, *next = NULL; if(root == NULL) return NULL; if(root->left != NULL) { tmp = root->right; root->right = root->left; flatten(root->left); root->left = NULL; while(root->right != NULL) root = root->right; root->right = tmp; flatten(tmp); } else flatten(root->right); }
Flatten Binary Tree to Linked List
原文:http://www.cnblogs.com/dylqt/p/5025396.html