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* p=root->left;if(p==NULL){flatten(root->right);return;}while(p->right!=NULL) p=p->right;TreeNode* temp=root->right;root->right=root->left;root->left=NULL;//一定不要忘记左子树要赋空p->right=temp;flatten(root->right);return;} };
这种DFS画图最好理解了,下图是我的解题过程: