读书人

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

发布时间: 2012-12-25 16:18:28 作者: rapoo

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





读书人网 >编程

热点推荐