TreeNode* Convert(TreeNode* pRootOfTree)
{
if
(pRootOfTree == nullptr)
return
nullptr;
TreeNode* pre = nullptr;
convertHelper(pRootOfTree, pre);
TreeNode* res = pRootOfTree;
while
(res ->left)
res = res ->left;
return
res;
}
void
convertHelper(TreeNode* cur, TreeNode*& pre)
{
if
(cur == nullptr)
return
;
convertHelper(cur ->left, pre);
cur ->left = pre;
if
(pre) pre ->right = cur;
pre = cur;
convertHelper(cur ->right, pre);
}
--------------------------------------------------------------------------------------------------
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(!pRootOfTree) return NULL;
TreeNode* pre=NULL;
ConvertHelp(pRootOfTree,pre);
TreeNode* res=pRootOfTree;
while(res->left)
res=res->left;
return res;
}
private:
void ConvertHelp(TreeNode* cur,TreeNode* &pre)
{
if(!cur) return;
ConvertHelp(cur->left,pre);
cur->left=pre;
if(pre) pre->right=cur;
pre=cur;
ConvertHelp(cur->right,pre);
}
};