我表弟计算机大四即将毕业,这几天在这边找工作,面试要求显示无限极树,树目录下挂有图片文件,点击目录可显示图片文件。表弟实践经验不足,在学校学的都是些理论,对算法与数据结构了解的也甚少,搞了一天没有个结果。晚上只能由我操刀来完成面试作业,以便让表弟通过面试,以后再慢慢引导他学习。现在的大学生真的需要加强自己能力培养,无语。
现贴上无限极树的代码(采用递归算法实现),供后来者学习,这是很多应用中都用到的东东,但我追求代码简洁。程序功能说明:通过递归动态在控件treeView中生成目录树,给treeView的Tag属性赋值,是为了点击节点时再做其他的应用;
private void Form1_Load(object sender, System.EventArgs e)
{
TreeNode node = new TreeNode(); //这里是创建一个根节点
node.Text = "根结点";
treeView1.Nodes.Add(node);
node.Tag = 0;//给根结点赋值0;
CreateChildTree(node, 0); //调用创建树的方法
treeView1.ExpandAll();
}
protected void CreateChildTree(TreeNode parentNode, int parentID) //创建树
{
string myConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
string mySelectQuery = "select * from t_nodes where p_id = " + parentID;
myConnection = new OleDbConnection(myConnString);
OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
myConnection.Open();
OleDbDataReader myReader;
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
TreeNode myNode = new TreeNode(myReader["name"].ToString());
myNode.Tag = myReader["id"];
parentNode.Nodes.Add(myNode);
CreateChildTree(myNode,(int)myReader["id"]); //递归显示出子节点
}
myReader.Close();
myConnection.Close();
}