linked list为单调递增,说明是前序遍历左右子树后的合并
1
/
2 5
/ \
3 4 6
case1:
2->3->4
5->6
root->left = "2"
root->rihjt = "5"
找到root->left的结尾,并指向root->right
root->right 指向root->left的头,同时root->left设为NULL
case2:
当root->left为空
root->right指向的链表 为5->6,不需要任何操作。
void flatten(struct TreeNode* root){
if(root){
flatten(root->left);
flatten(root->right);
if(root->left){
struct TreeNode * p = root->left;
while(p->right){
p = p->right;
}
p->right = root->right;
root->right = root->left;
root->left = NULL;
}
}
}