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
代码:
class Solution { public: void flatten(TreeNode *root) { if(root == NULL) return; TreeNode* right = NULL; DFS(root, right); } void DFS(TreeNode* root, TreeNode *&right) { if(root != NULL) { DFS(root->right, right); DFS(root->left, right); root->right = right; right = root; root->left = NULL; } } };