《剑指Offer》 面试题27:二叉搜索树与双向链表

来源:互联网 发布:淘宝被投诉售假敲诈 编辑:程序博客网 时间:2024/05/29 12:49

《剑指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;    }};
0 0