convert binary tree to double linked list
Anonym
Check out this in place DoublyLinked Conversion of Tree. 1. Link a Node to its leftchild's rightchild as its leftchild. 2. Make Node as right child of original leftchild. 3. Apply recursion. Node fn = null ; //First Node Node ln = null ; // Last Node public Node asDoublyLinkedList(Node root){ Node parent = root; Node current = root.leftNode; while(true){ if(current==null) { if(fn==null) fn = parent; if(parent.rightNode==null){ ln = parent; return parent; } Node n = asDoublyLinkedList(parent.rightNode); parent.rightNode = n; n.leftNode = parent; if(ln!=null){ ln.rightNode = fn; fn.leftNode = ln; } return parent; } parent.leftNode = current.rightNode; current.rightNode = parent; parent = current; current = parent.leftNode; } }