美文网首页
26:二叉搜索树与双向链表

26:二叉搜索树与双向链表

作者: iwtbam | 来源:发表于2019-08-12 22:02 被阅读0次

题目描述

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

解题思路

  • 二叉搜索树的中序即使有序,中序递归,记录前驱结点。
  • 二叉搜索树最左边的即为最小值,可以作为链表的头结点。

AC代码

class Solution {
public:
    
    void mid(TreeNode* cur, TreeNode*& pre)
    {
       if(!cur)
           return;
        
        mid(cur->left, pre);
        
        cur->left = pre;
        if(pre)
            pre->right = cur;
        pre = cur;
        
        mid(cur->right, pre);
    }

    TreeNode* Convert(TreeNode* pRootOfTree)
    {
        if(pRootOfTree == NULL)
            return NULL;
        TreeNode* pre = NULL;
        mid(pRootOfTree, pre);
        
        TreeNode* res = pRootOfTree;
        
        while(res->left)
            res = res->left;
       return res;
        
    }
    

相关文章

  • 剑指offer.C++.code26-30

    26. 二叉搜索树与双向链表【分治法】 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任...

  • 27 二叉搜索树与双向链表(二叉树的线索化)

    二叉搜索树与双向链表 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的...

  • 面试题36. 二叉搜索树与双向链表

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新...

  • 《剑指offer》— JavaScript(26)二叉搜索树与双

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结...

  • 36二叉搜索树与双向链表

    面试题36:二叉搜索树与双向链表题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何...

  • 剑指offer(二十六)二叉搜索树与双向链表

    点击进入 牛客网题库:二叉搜索树与双向链表 题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要...

  • JZ-026-二叉搜索树与双向链表

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结...

  • 将二叉搜索树转化为排序的双向链表

    题目 将二叉搜索树转化为排序的双向链表 例如,下图二叉搜索树转换为图中的排序的双向链表。 解析 转换为排序的双向链...

  • 剑指offer 26-30

    26.二叉搜索树与双向链表 由于二叉搜索树已经是排序好的了,因此我们可以采用中序遍历的方式,对每个结点改变指针的方...

  • 剑指Offer二

    27.二叉搜索树与双向链表 将二叉搜索树转换成一个排序的双链表,利用二叉搜索树的特性,非空二叉树的左子树上的节点的...

网友评论

      本文标题:26:二叉搜索树与双向链表

      本文链接:https://www.haomeiwen.com/subject/oxnpjctx.html