Advertisement
sweet1cris

Untitled

Oct 19th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.66 KB | None | 0 0
  1. package recursion3;
  2.  
  3. class TreeNode {
  4.     public int value;
  5.     public TreeNode left;
  6.     public TreeNode right;
  7.  
  8.     public TreeNode(int value) {
  9.         this.value = value;
  10.     }
  11.  
  12. }
  13.  
  14. class ListNode {
  15.     public int key;
  16.     public ListNode next;
  17.     public ListNode prev;
  18.  
  19.     public ListNode(int key) {
  20.         this.key = key;
  21.         this.next = null;
  22.         this.prev = null;
  23.     }
  24. }
  25.  
  26. public class BtreeToDDL {
  27.     TreeNode prev = null;
  28.     TreeNode head = null;
  29.  
  30.     public static void main(String[] args) {
  31.         TreeNode node1 = new TreeNode(10);
  32.         TreeNode node2 = new TreeNode(5);
  33.         TreeNode node3 = new TreeNode(15);
  34.         TreeNode node4 = new TreeNode(2);
  35.         TreeNode node5 = new TreeNode(7);
  36.         TreeNode node6 = new TreeNode(12);
  37.         TreeNode node7 = new TreeNode(20);
  38.         node1.left = node2;
  39.         node1.right = node3;
  40.         node2.left = node4;
  41.         node2.right = node5;
  42.         node3.left = node6;
  43.         node3.right = node7;
  44.         BtreeToDDL bd = new BtreeToDDL();
  45.         bd.BinaryTree2DoubleLinkedList(node1);
  46.  
  47.         while (bd.head != null) {
  48.             System.out.println("** " + bd.head.value);
  49.             bd.head = bd.head.right;
  50.         }
  51.         while (bd.prev != null) {
  52.             System.out.println(" -- " + bd.prev.value);
  53.             bd.prev = bd.prev.left;
  54.         }
  55.     }
  56.  
  57.     void BinaryTree2DoubleLinkedList(TreeNode root) {
  58.         if (root == null)
  59.             return; // Base case
  60.         // Initialize previously visited node as NULL. This is static so that
  61.         // the same value is accessible in all recursive calls
  62.         BinaryTree2DoubleLinkedList(root.left);
  63.         if (prev == null) {
  64.             head = root;// unique case at the beginning
  65.         } else {
  66.             root.left = prev; // point to left
  67.             prev.right = root;// point to right
  68.         }
  69.         prev = root;
  70.         BinaryTree2DoubleLinkedList(root.right);
  71.     }
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement