Skip to main content

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

Flattening tree nodes in order of postorder traversal

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




Comment

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