while(pre->right)pre=pre->right; //while(pre)pre=pre->right;
pre->right=root->right; //pre=root->right;错误,pre已经是一个空指针,pre=root->right,达不到串连节点的效果。
void flatten(struct TreeNode* root){
while(root){
if(root->left==NULL)root=root->right;
else{
struct TreeNode*pre;
pre=root->left;
while(pre->right)pre=pre->right;//while(pre)pre=pre->right;pre=root->right;错误,pre已经是一个空指针,pre=root->right,达不到串连节点的效果。
pre->right=root->right;
root->right=root->left;
root->left=NULL;
root=root->right;
}
}
}
编程思路参考本题题解