Level order traversal using queue in vb.net
Vb program for Level order traversal using queue. Here problem description and other solutions.
' Include namespace system
Imports System
' Vb.net program for
' Level order tree traversal using queue
' Create Q node
Public Class QNode
Public data As TreeNode
Public [next] As QNode
Public Sub New(ByVal node As TreeNode)
Me.data = node
Me.next = Nothing
End Sub
End Class
' Binary Tree Node
Public Class TreeNode
Public data As Integer
Public left As TreeNode
Public right As TreeNode
Public Sub New(ByVal data As Integer)
' Set node value
Me.data = data
Me.left = Nothing
Me.right = Nothing
End Sub
End Class
Public Class MyQueue
Public head As QNode
Public tail As QNode
Public count As Integer
Public Sub New()
Me.head = Nothing
Me.tail = Nothing
Me.count = 0
End Sub
Public Function size() As Integer
Return Me.count
End Function
Public Function isEmpty() As Boolean
Return Me.count = 0
End Function
' Add new node of queue
Public Sub enqueue(ByVal value As TreeNode)
' Create a new node
Dim node As QNode = New QNode(value)
if (Me.head Is Nothing) Then
' Add first element into queue
Me.head = node
Else
' Add node at the end using tail
Me.tail.[next] = node
End IF
Me.count += 1
Me.tail = node
End Sub
' Delete a element into queue
Public Sub dequeue()
if (Me.head Is Nothing) Then
' Empty Queue
Return
End If
' Visit next node
Me.head = Me.head.[next]
Me.count -= 1
if (Me.head Is Nothing) Then
' When deleting a last node of linked list
Me.tail = Nothing
End If
End Sub
' Get front node
Public Function peek() As TreeNode
if (Me.head Is Nothing) Then
Return Nothing
End If
Return Me.head.data
End Function
End Class
public Class BinaryTree
Public root As TreeNode
Public Sub New()
' Set initial tree root
Me.root = Nothing
End Sub
Public Sub levelOrder()
if (Me.root IsNot Nothing) Then
Dim q As MyQueue = New MyQueue()
' Add first node
q.enqueue(Me.root)
Dim node As TreeNode = Me.root
while (q.isEmpty() = False AndAlso node IsNot Nothing)
if (node.left IsNot Nothing) Then
' Add left child node
q.enqueue(node.left)
End If
if (node.right IsNot Nothing) Then
' Add right child node
q.enqueue(node.right)
End If
' Display level node
Console.Write(" " + node.data.ToString())
' Remove current node
q.dequeue()
' Get new head
node = q.peek()
End While
Else
Console.WriteLine("Empty Tree")
End IF
End Sub
Public Shared Sub Main(ByVal args As String())
' Create new tree
Dim tree As BinaryTree = New BinaryTree()
' Make A Binary Tree
' -----------------------
' 1
' / \
' 2 3
' / / \
' 4 5 6
' / / \
' 7 8 9
' Adding tree nodes
tree.root = New TreeNode(1)
tree.root.left = New TreeNode(2)
tree.root.right = New TreeNode(3)
tree.root.right.right = New TreeNode(6)
tree.root.right.left = New TreeNode(5)
tree.root.left.left = New TreeNode(4)
tree.root.left.left.left = New TreeNode(7)
tree.root.right.left.left = New TreeNode(8)
tree.root.right.left.right = New TreeNode(9)
' Display level order element
tree.levelOrder()
End Sub
End Class
Output
1 2 3 4 5 6 7 8 9
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment