[劍指offer]二叉搜索樹轉鏈表

/*
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;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章