题目链接
https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/
思路
1.将左子树插入到右子树
2.原来的右子树插入到左子树最右边的结点
3.继续下一个操作,直到右子树为null
void flatten(TreeNode* root) {
while(root!=nullptr)
{
if(root->left==nullptr)
{ //如果左子树为null,继续寻找下一个结点
root = root->right;
}else
{
//找出左子树最右边的结点
TreeNode *pre = root->left;
while(pre->right!=nullptr)
pre = pre->right;
//将右子树放到左子树最右边的结点
pre->right = root->right;
//右子树放到左子树处
root->right = root->left;
// 更新结点
root->left=nullptr;
root = root->right;
}
}
}