用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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |