C#实现树的双亲表示法

时间:2022-04-28 09:20:55
C#实现树的双亲表示法

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3k1MTIyMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace 树的实现
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//构造一个双亲法表示树的类
public class aTree
{
public int ID, pID;
public string sNode;
public aTree()
{
ID = pID = -1;
sNode = "";
}
}
//将双亲法表示的树转换为TreeNode类型
public void cTree(TreeNode pT,aTree[] aT,int n,int pNode)
{
for (int i = 0; i < n; i++)
{
if (aT[i].pID == pNode)
{
TreeNode T = new TreeNode();
T.Tag = aT[i].ID;
T.Text = aT[i].sNode;
pT.Nodes.Add(T);
cTree(T, aT, n, i);//递归
}
}
}
private void button1_Click(object sender, EventArgs e)
{
aTree []T=new aTree[4];
for (int i = 0; i < 4; i++)
T[i] = new aTree();
T[0].ID = 0; T[0].pID = -1; T[0].sNode = "A";
T[1].ID = 1; T[1].pID = 0; T[1].sNode = "B";
T[2].ID = 2; T[2].pID = 0; T[2].sNode = "C";
T[3].ID = 3; T[3].pID = 2; T[3].sNode = "D";
TreeNode TN = new TreeNode();//加入一个根结点
TN.Tag = T[0].ID;
TN.Text = T[0].sNode;
cTree(TN, T, 4, 0);
treeView1.Nodes.Clear();
treeView1.Nodes.Add(TN);
}
}
}