解题思路:
1
.核心是中序遍历的非递归算法。
2
.修改当前遍历节点与前一遍历节点的指针指向。
*
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!=NULL)
convertbi(pRootOfTree);
return realhead;
}
private:
TreeNode *head=NULL;
TreeNode *realhead=NULL;
void convertbi(TreeNode *node)
{
if(node==NULL)
return ;
convertbi(node->left);
if(head==NULL)
{
head=node;
realhead=node;
}
else
{
head->right=node;
node->left=head;
head=node;
}
convertbi(node->right);
}
};