/*
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)
{
TreeNode *head, *cur1, *cur2;//cur1右子树的第一个节点,head左子树的最后一个节点,cur2右子树的第一个节点
if(pRootOfTree==NULL) return NULL;
cur1=head=pRootOfTree->left;
cur2=pRootOfTree->right;
if(pRootOfTree->left)
{
Convert(pRootOfTree->left);
while(cur1->right) cur1=cur1->right;
cur1->right=pRootOfTree;
pRootOfTree->left=cur1;
while(head->left!=NULL) head=head->left;
}
if(pRootOfTree->right)
{
Convert(pRootOfTree->right);
while(cur2->left) cur2=cur2->left;
cur2->left=pRootOfTree;
pRootOfTree->right=cur2;
}
if(head==NULL) return pRootOfTree;
return head;
}
};
[剑指offer]二叉搜索树转链表
最新推荐文章于 2025-02-27 20:20:50 发布