DSA Series Chapter 28 – Convert Binary Tree to Doubly Linked List (DLL)(Python Version)

[Follow here] for daily coding insights

DSA Series Chapter 28 – Convert Binary Tree to Doubly Linked List (DLL)(Python Version)


1. Node Definition

class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None

2. Conversion Function

def convert_to_dll(root, head_prev):
if root is None:
return

convert_to_dll(root.left, head_prev)

if head_prev[1] is None:
head_prev[0] = root
else:
root.left = head_prev[1]
head_prev[1].right = root

head_prev[1] = root

convert_to_dll(root.right, head_prev)

3. Complete Python Program

class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None

def convert_to_dll(root, head_prev):
if root is None:
return

convert_to_dll(root.left, head_prev)

if head_prev[1] is None:
head_prev[0] = root
else:
root.left = head_prev[1]
head_prev[1].right = root

head_prev[1] = root

convert_to_dll(root.right, head_prev)

def print_dll(head):
temp = head
while temp:
print(temp.data, end=" ")
temp = temp.right

# -------- Main --------
root = Node(10)
root.left = Node(5)
root.right = Node(20)
root.left.left = Node(3)
root.left.right = Node(8)

head_prev = [None, None] # [head, prev]
convert_to_dll(root, head_prev)

print("Doubly Linked List:", end=" ")
print_dll(head_prev[0])

4. Output

Doubly Linked List: 3 5 8 10 20

16. Key Interview Notes

  • Uses inorder traversal

  • In-place conversion

  • Very popular interview question


ALSO CHECK 

DS(Data Structure) Python&C Edition

DSA Series Chapter 1 Time & Space Complexity ( C Edition)

DSA Series Chapter 2 Arrays  (C Version)


DSA Series Chapter 2 Arrays  (Python Version)

DSA Series Chapter 3 Strings (C Version)


DSA Series Chapter 3 Strings (Python Version)


DSA Series Chapter 4 Linked Lists (Python Version)


DSA Series Chapter 4 Linked Lists (C Version)


DSA Series Chapter 5 Stacks (Python Version)


DSA Series Chapter 5  Stacks  (C Version)




















DSA Series Chapter 13 - Binary Tree traversal, BFS, DFT/DFS, Preorder Traversal In Binary Tree


DSA Series Chapter 14 - InOrder Traversal (Binary Tree C Version)


DSA Series Chapter 14 - InOrder Traversal (Binary Tree Python Version)

 

DSA Series Chapter 15 – POSTORDER TRAVERSAL (BINARY TREE)(Python Version)


DSA Series Chapter 15 – POSTORDER TRAVERSAL (BINARY TREE)(C Version)


DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(C Version)


DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(Python Version)



DSA Series Chapter 19 : DELETION IN BINARY TREE(C Version)

DSA Series Chapter 19 : DELETION IN BINARY TREE(Python Version)


DSA Series Chapter 20 – HEIGHT OF BINARY TREE(C Version)

DSA Series Chapter 20 – HEIGHT OF BINARY TREE(Python Version)

DSA Series Chapter 21 : COUNT TOTAL NODES IN BINARY TREE(C Version)

DSA Series Chapter 21 : COUNT TOTAL NODES IN BINARY TREE(Python Version)
















Tail Recursion Optimization: How Compilers Convert Recursion Into Iteration


Advanced Recursion: Memoization vs. Tabulation — The Deep Optimization Blueprint for Professionals


Advanced Sorting Algorithms: Merge Sort Internals — Merge Tree, Cache Behavior & Real Cost Analysis


Enjoyed this post? [Follow here] for daily coding insights

Comments