首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-25 
递归-----把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向

递归-----把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。
  比如将二元查找树
                                             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);    }}





热点排行