剑指offer(26)—二叉搜索树与双向链表

来源:互联网 发布:it cost 编辑:程序博客网 时间:2024/06/07 16:22

二叉搜索树与双向链表

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

代码

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    void ConvertNode(TreeNode* pRoot, TreeNode** pListLast){    if (pRoot == NULL)        return;    TreeNode* ptmp = pRoot;    if (pRoot->left)        ConvertNode(pRoot->left, pListLast);    ptmp->left = *pListLast;    if (*pListLast)        (*pListLast)->right = ptmp;    *pListLast = ptmp;    if (pRoot->right)        ConvertNode(pRoot->right, pListLast);}TreeNode* Convert(TreeNode* pRootOfTree){    //链表的尾结点    TreeNode* pListLast = NULL;    ConvertNode(pRootOfTree, &pListLast);    // 找到链表的头结点    TreeNode* pListHead = pListLast;    while (pListHead && pListHead->left)        pListHead = pListHead->left;    return pListHead;}};
阅读全文
0 0