《剑指Offer》 P151
面试题27:二叉搜索树与双向链表
题目
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解答
class Solution {
public:
void ConvertCore(TreeNode* root, TreeNode** tail) {
if (root->left != NULL)
ConvertCore(root->left, tail);
if ((*tail) != NULL)
(*tail)->right = root;
root->left = (*tail);
(*tail) = root;
if (root->right != NULL)
ConvertCore(root->right, tail);
}
TreeNode* Convert(TreeNode* root) {
if (root == NULL)
return NULL;
TreeNode *tail = NULL;
ConvertCore(root, &tail);
TreeNode *head = tail;
while (head->left != NULL)
head = head->left;
return head;
}
};