加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用TreeView显示满二叉树

发布时间:2020-12-17 07:59:51 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 '此代码目的是用Treeview显示满二叉树'用for循环从上到下从左到右依次填充'开发环境:.net'新手学习,请多指教!'QQ 675686066'email [email?protected

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

'此代码目的是用Treeview显示满二叉树
'用for循环从上到下从左到右依次填充
'开发环境:.net
'新手学习,请多指教!
'QQ 675686066
'email [email?protected]
Public Class Form1
    Private Const Max = 100

    '把二叉树的节点放到数组中,Lchild,Rchild分别指向孩子所在下标
    Public Structure Node
        Public Num As Integer
        Public Lchild As Integer
        Public Rchild As Integer
    End Structure

    '新添节点的父节点可以看做一个队列
    Dim Head As Integer '头
    Dim Tail As Integer '尾
    Dim Nodes(Max) As Node


    Dim TreeNodes(Max) As TreeNode

    '用-1作为终止,相当于c语言的NULL
    Private Sub InitNodes()
        For I As Integer = 0 To Max - 1
            Nodes(I).Num = -1
            Nodes(I).Lchild = -1
            Nodes(I).Rchild = -1
        Next
    End Sub

    ''' <summary>
    ''' 添加节点
    ''' </summary>
    ''' <param name="Num">新节点的父节点的下标</param>
    ''' <remarks></remarks>
    Private Sub AddNode(ByVal Num As Integer)

        Dim NewNode As Node
        NewNode.Num = Num
        NewNode.Lchild = -1
        NewNode.Rchild = -1

        If Nodes(Head).Lchild = -1 Then
            '添加内存中节点
            Tail += 1
            Nodes(Tail) = NewNode
            Nodes(Head).Lchild = Tail

            '添加树节点
            TreeNodes(Tail) = New TreeNode(Num.ToString)
            TreeNodes(Head).Nodes.Add(TreeNodes(Tail))

        ElseIf Nodes(Head).Rchild = -1 Then
            Tail += 1
            Nodes(Tail) = NewNode
            TreeNodes(Tail) = New TreeNode(Num.ToString)
            TreeNodes(Head).Nodes.Add(TreeNodes(Tail))

            Nodes(Head).Rchild = Tail
            Head += 1
        End If

    End Sub

    '递归输出
    Private Sub PrintTree(ByVal Root As Integer)


        If Root = -1 Then
            Return
        End If

        If Nodes(Root).Num <> -1 Then
            MsgBox(Nodes(Root).Num)
        End If

        PrintTree(Nodes(Root).Lchild)
        PrintTree(Nodes(Root).Rchild)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
        InitNodes()

        Nodes(1).Num = 1
        Head = 1
        Tail = 1

        TreeNodes(1) = New TreeNode("1")
        TreeView1.Nodes.Add(TreeNodes(1))

        For I As Integer = 2 To 30
            AddNode(I)
        Next

        TreeView1.ExpandAll()

        '递归输出
        'PrintTree(1)
    End Sub
End Class

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读