Flatten Binary Tree to Linked List (DFS)
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画图最好理解了,下图是我的解题过程:


浙公网安备 33010602011771号