Created
July 3, 2017 18:27
-
-
Save anil477/cb82f7b5c559762c19279595c181fa1d to your computer and use it in GitHub Desktop.
in-place conversion of Binary Tree to DLL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// A Java program for in-place conversion of Binary Tree to DLL | |
class Node | |
{ | |
int data; | |
Node left, right; | |
public Node(int data) | |
{ | |
this.data = data; | |
left = right = null; | |
} | |
} | |
class BinaryTree | |
{ | |
Node root; | |
// head --> Pointer to head node of created doubly linked list | |
Node head; | |
// Initialize previously visited node as NULL. This is | |
// static so that the same value is accessible in all recursive | |
// calls | |
Node prev = null; | |
// A simple recursive function to convert a given Binary tree | |
// to Doubly Linked List | |
// root --> Root of Binary Tree | |
void BinaryTree2DoubleLinkedList(Node root) | |
{ | |
// Base case | |
if (root == null) | |
return; | |
// Recursively convert left subtree | |
BinaryTree2DoubleLinkedList(root.left); | |
// Now convert this node | |
if (prev == null) | |
head = root; | |
else | |
{ | |
root.left = prev; | |
prev.right = root; | |
} | |
prev = root; | |
// Finally convert right subtree | |
BinaryTree2DoubleLinkedList(root.right); | |
} | |
/* Function to print nodes in a given doubly linked list */ | |
void printList(Node node) | |
{ | |
while (node != null) | |
{ | |
System.out.print(node.data + " "); | |
node = node.right; | |
} | |
} | |
// Driver program to test above functions | |
public static void main(String[] args) | |
{ | |
// Let us create the tree as shown in above diagram | |
BinaryTree tree = new BinaryTree(); | |
tree.root = new Node(10); | |
tree.root.left = new Node(12); | |
tree.root.right = new Node(15); | |
tree.root.left.left = new Node(25); | |
tree.root.left.right = new Node(30); | |
tree.root.right.left = new Node(36); | |
// convert to DLL | |
tree.BinaryTree2DoubleLinkedList(tree.root); | |
// Print the converted List | |
tree.printList(tree.head); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment