Flatten binary tree in order of postorder traversal in vb.net

Vb program for Flatten binary tree in order of postorder traversal. Here more solutions.
' Include namespace system
Imports System
' Vb.net program for
' Flatten binary tree in order of post-order traversal
' Node of Binary Tree
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 BinaryTree
Public root As TreeNode
Public back As TreeNode
Public Sub New()
' Set initial tree root to null
Me.root = Nothing
Me.back = Nothing
End Sub
' Recursive function
' Display postorder view of binary tree
Public Sub postOrder(ByVal node As TreeNode)
if (node IsNot Nothing) Then
Me.postOrder(node.left)
Me.postOrder(node.right)
' Print node value
Console.Write(" {0} ", node.data)
End If
End Sub
' This are flattening tree nodes in postorder from
Public Sub transform(ByVal node As TreeNode)
if (node IsNot Nothing) Then
' Recursive executing left and right subtree
Me.transform(node.left)
Me.transform(node.right)
if (Me.back Is Nothing) Then
' This is first node of postorder traversal
' Get first node of transform tree
Me.root = node
Else
' Next node
Me.back.right = node
' We taking only one direction
Me.back.left = Nothing
End IF
Me.back = node
End If
End Sub
' This are handling the request of
' flatten tree nodes in post order from.
Public Sub flattenNode()
if (Me.root Is Nothing) Then
' When empty tree
Return
End If
' Set back node
Me.back = Nothing
' Perform flatten operation
Me.transform(Me.root)
if (Me.back IsNot Nothing) Then
' Set last node of post order
Me.back.left = Nothing
Me.back.right = Nothing
End If
Me.back = Nothing
End Sub
' Display flatten elements of tree
Public Sub showElement()
if (Me.root Is Nothing) Then
Console.WriteLine( vbLf &" Empty Tree")
Return
End If
Console.WriteLine( vbLf &" Flatten Tree Node in Postorder : ")
Dim temp As TreeNode = Me.root
' Iterate tree elements
while (temp IsNot Nothing)
' Display node value
Console.Write(" {0} ", temp.data)
' Visit to next node
temp = temp.right
End While
End Sub
Public Shared Sub Main(ByVal args As String())
' New tree
Dim tree As BinaryTree = New BinaryTree()
' Construct Binary Tree
' -----------------------
' 1
' / \
' / \
' 6 8
' / \ / \
' 2 3 7 5
' / / \ \
' 9 4 -6 11
' Add nodes
tree.root = New TreeNode(1)
tree.root.left = New TreeNode(6)
tree.root.left.left = New TreeNode(2)
tree.root.right = New TreeNode(8)
tree.root.right.right = New TreeNode(5)
tree.root.right.left = New TreeNode(7)
tree.root.right.left.right = New TreeNode(-6)
tree.root.left.right = New TreeNode(3)
tree.root.left.right.left = New TreeNode(4)
tree.root.left.left.left = New TreeNode(9)
tree.root.right.right.right = New TreeNode(11)
' Display tree elements
Console.WriteLine( vbLf &" Postorder Nodes : ")
tree.postOrder(tree.root)
' Testing
tree.flattenNode()
' After transform
tree.showElement()
End Sub
End Class
Output
Postorder Nodes :
9 2 4 3 6 -6 7 11 5 8 1
Flatten Tree Node in Postorder :
9 2 4 3 6 -6 7 11 5 8 1
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