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