`

递归-----把二元查找树转变成排序的双向链表

阅读更多
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。
  比如将二元查找树
                                             10
                                           /     \
                                         6        14
                                       /   \      /  \
                                    4      8   12     16
转换成双向链表
4=6=8=10=12=14=16。

大思路是:中序遍历。

小思路: 把二叉树的左右孩子看成双链表中的联系两边借点的东东。 最开始双链表是空的。
class Node{
  public int currentVal;
  public Node left;
  public Node right;
}

public Node covertNodeAndGetFirstList(Node currentNode,Node lastListNode){
   if(currentNode==null){
      while(lastListNode.left!=null){
           lastListNode = lastListNode.left;
     }
      return lastListNode;
   }
    if(currentNode.left != null){
          covertNode(currentNode.left , lastListNode);
    }
   
    currentNode.left = lastListNode;
    if(lastListNode !=null)
        lastListNode.rigth = currentNode;
    lastListNode = currrentNode;
   
    if(currentNode.rigth!=null){
        covertNode(currentNode.right,lastListNode);
    }
}






分享到:
评论

相关推荐

    二元查找树转变为双向链表C语言实现

    将二元查找树转化为排序的双向链表,实质是利用二元查找树的特性,即所有节点按键值有序排列。这个过程的关键在于保持原有的顺序,同时调整节点间的指针,使得它们形成一个双向链表。下面介绍具体的实现步骤: 1. *...

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

    本题要求将一个二叉搜索树转换为一个排序的循环双向链表。在这个过程中,不能创建新的节点,只能调整树中已有的节点指针。 在双向链表中,每个节点都有两个指针,一个指向它的前驱节点(即顺序上位于其左侧的节点)...

    程序员面试题精选100题.docx

    * 将二元查找树转换成双向链表需要使用递归思路,思路一是将左子树和右子树分别转换成双向链表,然后将他们连接起来,思路二是使用中序遍历树,比较小的结点先访问,最后将所有结点连接起来。 * 在将二元查找树转换...

    数据结构排序链表100题.doc

    #### (01) 把二元查找树转变成排序的双向链表 **题目描述** 给定一棵二元查找树(Binary Search Tree,简称BST),目标是将其转换为一个排序的双向链表。要求在转换过程中不创建新的节点,仅调整节点之间的指针...

    程序员面试选精选.doc

    本题“把二元查找树转变成排序的双向链表”是一道典型的数据结构转换问题,主要涉及到二元查找树(Binary Search Tree, BST)和双向链表(Double Linked List)的特性。 1. **二元查找树**: - 二元查找树是一种...

    常见:程序员面试题精选100题1

    这个问题提出了一个算法挑战,即如何在不创建新节点的情况下,仅通过修改树中节点的指针,将二元查找树转换成一个排序的双向链表。有以下两种常见的递归策略: a. **思路一:自底向上,逐层处理**: - 首先处理左...

    程序员面试题精选63题

    本题目的核心是将一个二元查找树转换成一个排序的双向链表,这涉及到对树结构的深入理解和递归或迭代的算法设计。 1. **二元查找树**: - 二元查找树是一种特殊的树结构,其中每个节点包含一个键、关联的值、左子...

    程序员面试题精选100题

    今天,我们将深入分析其中的一道题目,即将二元查找树转换成排序的双向链表。 知识点一:二元查找树(Binary Search Tree) 二元查找树是一种特殊的树状数据结构,它的每个结点都含有一个关键字(Key),左子树中...

    算法面试题总结_嵌入式-常用知识&面试题库_大厂面试真题.doc

    1. 把二元查找树转变成排序的双向链表:本题目考察了数据结构和算法的知识,要求将二元查找树转换成排序的双向链表。解决方法是首先中序遍历二元查找树,然后调整指针的指向。 2. 设计包含 min 函数的栈:本题目...

    微软等数据结构%2B算法面试100题全部答案集锦

    把二元查找树转变成排序的双向链表 #### 题目解析: 题目要求将一棵二元查找树(Binary Search Tree,BST)转换为一个排序的双向链表(Doubly Linked List)。在这个过程中,不能创建任何新的节点,只能通过调整...

    微软面试100题完美答案版

    根据提供的信息,我们可以总结并扩展出一系列与微软面试100题相关的知识点,特别是针对第一个题目:“把二元查找树转变成排序的双向链表”。 ### 知识点1:二元查找树(Binary Search Tree, BST)的概念 **定义:** ...

    微软面试100题

    本文将详细介绍其中的一道典型题目:“把二元查找树转变成排序的双向链表”。 #### 题目解析 **题目描述**: 给定一棵二元查找树(Binary Search Tree, BST),将其转换成一个排序的双向链表(Doubly Linked List...

    笔试题精选

    本文详细讨论了将二元查找树(Binary Search Tree,简称BST)转换为双向链表的问题,并提供了两种递归思路的解析和参考代码实现。这种转换是数据结构和算法面试中的一个经典题目,尤其是出自微软等技术公司的面试...

    程序员面试100题程序员面试100题

    二元查找树转排序双向链表问题概述 - **背景介绍**:二元查找树(Binary Search Tree, BST)是一种特殊的二叉树,其中每个节点的值大于其左子树中的任何节点的值,并且小于其右子树中的任何节点的值。在本题中,我们...

    程序员面试精选100题,非常经典

    二元查找树转排序双向链表问题概述 在本篇文章中,我们将探讨一个经典的编程面试题目:如何将一棵二元查找树(Binary Search Tree,简称BST)转换成一个排序的双向链表(Doubly Linked List)。这个问题不仅考验了...

Global site tag (gtag.js) - Google Analytics