`

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

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






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics