/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(pRootOfTree==nullptr)
{
return nullptr;
}
TreeNode* prev=nullptr;
_Convert(pRootOfTree,prev);
while(prev->left)//找头,因为prev的左边指向空
{
prev=prev->left;
}
return prev;
}
private:
void _Convert(TreeNode* cur,TreeNode*& prev)//利用中序,遍历二叉树
{
if(cur==nullptr)
return ;
_Convert(cur->left,prev);
cur->left=prev;//
if(prev)//这里是最后重要的注意点,当Prev为空时,不能指向
prev->right=cur;
prev=cur;//更新Prev的值
_Convert(cur->right,prev);
}
};
二叉搜索树与双向链表问题
最新推荐文章于 2024-07-23 12:24:57 发布