110,567
社区成员
发帖
与我相关
我的任务
分享
class Results
{
string Title="";
ArrayList ResultList=new ArrayList();
private const int MAX = 100;
//检查本对象以及所有子孙是否有符合条件的,深度优先遍历,初次调用层数设1
public Results FindResults(string text,int count)
{
if(this.Title == text) return this;
foreach(Results child in ResultList)
{
if(count >= MAX) return null;
Results r = child.FindResults(text,count++);
if(r != null) return r;
}
return null;
}
}
class Results
{
public string Title = "";
public List<Results> ResultList = new List<Results>();
}
class Form1
{
//根据text查找对应的Results
public void FindResults(string text, List<Results> resultList, ref Results allFindResults)
{
for (int i = 0; i < resultList.Count; i++)
{
Results temp = resultList[i];
if (temp.Title == text) allFindResults.ResultList.Add(temp);
if (temp.ResultList.Count > 0)
FindResults(text, temp.ResultList, ref allFindResults);
}
}
}
class Results
{
string Title="";
ArrayList ResultList=new ArrayList();
//检查本对象以及所有子孙是否有符合条件的,深度优先遍历
public Results FindResults(string text)
{
if(this.Title == text) return this;
foreach(Results child in ResultList)
{
Results r = child.FindResults(text);
if(r != null) return r;
}
return null;
}
}
public Results FindResults(string text, ArraylList resultList)
{
for (int i = 0; i < resultList.Count; i++)
{
Results result = (Results)resultList[i];
if (result.Title == text) return result;
//if (result.ResultList.Count > 0) 这个判断没必要
Results childresult = FindResults(text, result.ResultList);
if(childresult != null) return childresult; //找到第一个非空的就返回,否则继续找下去
}
ruturn null;
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsApplication125
{
public partial class Form1 : Form
{
class Results
{
public string Title = "";
public ArrayList ResultList = new ArrayList();
}
Results FindResults(string text, ArrayList resultList)
{
for (int i = 0; i < resultList.Count; i++)
{
Results result = (Results)resultList[i];
if (result.Title == text) return result;
if (result.ResultList.Count > 0)
{
Results R=FindResults(text, result.ResultList);
if (R != null)
return R;
}
}
return null;
}
public Form1()
{
InitializeComponent();
ArrayList Tree = new ArrayList();
Results R1 = new Results();
R1.Title = "1";
Tree.Add(R1);
Results R1_1 = new Results();
R1_1.Title = "1_1";
R1.ResultList.Add(R1_1);
Results R1_2 = new Results();
R1_2.Title = "1_2";
R1.ResultList.Add(R1_2);
Results R1_3 = new Results();
R1_3.Title = "1_3";
R1.ResultList.Add(R1_3);
Results R2 = new Results();
R2.Title = "2";
Tree.Add(R2);
Results R2_1 = new Results();
R2_1.Title = "2_1";
R2.ResultList.Add(R2_1);
Results R2_2 = new Results();
R2_2.Title = "2_2";
R2.ResultList.Add(R2_2);
Results R2_3 = new Results();
R2_3.Title = "2_3";
R2.ResultList.Add(R2_3);
Results R = FindResults("2", Tree);
if (R != null)
Show(R.ResultList); // 会显示2下的3个节点title
}
void Show(ArrayList R)
{
for(int i=0;i<R.Count ;i++)
{
MessageBox.Show(((Results)R[i]).Title);
Show(((Results)R[i]).ResultList);
}
}
}
}