社区
C#
帖子详情
简单的递归算法,一时写不出来,求教老大们。
hzh_wen_x
2006-07-05 04:08:04
id Parentid name
1 0 aaaa
2 1 bbbb
3 1 cccc
4 2 dddd
5 2 dddd
6 4 dddd
这是一个树结构,我点击根结点1,怎么得到下面所有的子结点?把点击的根结点下所有子结点放到一个数组里。
...全文
233
6
打赏
收藏
简单的递归算法,一时写不出来,求教老大们。
id Parentid name 1 0 aaaa 2 1 bbbb 3 1 cccc 4 2 dddd 5 2 dddd 6 4 dddd 这是一个树结构,我点击根结点1,怎么得到下面所有的子结点?把点击的根结点下所有子结点放到一个数组里。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hzh_wen_x
2006-07-05
打赏
举报
回复
mengge(踏岸寻柳) 怎么遍历TreeNode啊?
hzh_wen_x
2006-07-05
打赏
举报
回复
不是要填到树里面去,树已经填充好了,我要点击根结点,得到下面所有结点,变成一个数组。
踏岸寻柳
2006-07-05
打赏
举报
回复
遍历TreeNode 即可
hzh_wen_x
2006-07-05
打赏
举报
回复
我不是要做得树型啊,我是要得到ID数组。。。
seaonce
2006-07-05
打赏
举报
回复
//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "preid = " + ParentID;
// dvTree.Sort = "orderid asc";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Value = "1";
Node.Text = Row["name"].ToString();
TreeView1.Nodes.Add(Node);
// Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["name"].ToString();
pNode.ChildNodes.Add(Node);
// Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
}
}
liaodanz
2006-07-05
打赏
举报
回复
在做树型的是吧..
private void Page_Load(object sender, System.EventArgs e)
{ Conn=new SqlConnection(com.connstr);
//new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
if(!Page.IsPostBack)
{
CreateDataSet();
InitTree(tvMenu.Nodes,"0");
}
}
//建立数据集
private DataSet CreateDataSet()
{
cmdSelect="select * from T_Dpt";
myCmd=new SqlDataAdapter(cmdSelect,Conn);
ds=new DataSet();
myCmd.Fill(ds,"tree");
return ds;
}
//建树的基本思路是:从根节点开始递归调用显示子树
private void InitTree(TreeNodeCollection Nds,string ParentDpt)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentDpt='" + ParentDpt +"'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["DptNo"].ToString();
//tmpNd.Text=drv["DptName"].ToString();
tmpNd.Text="<div onclick='test(this.innerText)'>"+drv["DptName"].ToString()+"</div>";//添加单击事件
tmpNd.Expanded=true;
tmpNd.ImageUrl="Images/"+"folder.gif";//drv["Icon"].ToString();
//tmpNd.NavigateUrl="../"+drv["Address"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentDpt"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}
递归算法
转换为非
递归算法
转 自 : https://blog.csdn.net/fbz123456/article/details/50959412
递归算法
实际上是一种分而治之的方法,它把复杂问题分解为
简单
问题来求解。对于某些复杂问题(例如hanio塔问题),
递归算法
是一种自然且合乎逻辑的解决问题的方式,但是
递归算法
的执行效率通常比较差。因此,在求解某些问题时,常采用
递归算法
来分析问题,用非
递归算法
来求解问题...
递归算法
(图文详解)
递归算法
说
简单
点即就是自身程序的调用,若你掌握递归相应逻辑,递归之时你便可以起飞!!!
递归算法
转化为非
递归算法
(1)直接用循环结构的算法替代
递归算法
(直接转化法,不需要使用栈) (2)用栈模拟系统的运行过程,通过分析只保存必须保存的信息,从而用非递归方法替代
递归算法
。(间接转化法,需要使用栈) 用循环结构替代递归过程: 采用循环结构消除递归这种直接转化法没有通用的转换算法,对于具体问题要深入分析对应的递归结构,设计有效的循环语句进行递归到非递归的转换。 直接转化法特别适合于尾递归。尾递归只有一个递归调用语...
递归与非
递归算法
一、原因:
递归算法
一般效率更低;有些程序语言不支持递归。 二、方法:将
递归算法
转换为非
递归算法
有两种方法,一种是直接求值,不需要回溯;另一种是不能直接求值,需要回溯。前者使用一些变量保存中间结果,称为直接转换法;后者使用栈保存中间结果,称为间接转换法,下面分别讨论这两种方法。 直接转换法 直接转换法通常用来消除尾递归和单向递归,将递归结构用循环结构来替代。 尾递归是指在
递归算法
中,递归调用语句只有一个,而且是处在算法的最后。例如求阶乘的
递归算法
: long fact(int n) { if(n0)
C++算法基础(5)--
递归算法
详解
本篇文章主要讲解算法基础中的重要算法之一
递归算法
一.
递归算法
简介 1.定义
递归算法
指一种通过重复将问题分解为同类的子问题而解决问题的方法。或者说
递归算法
是一种直接或者间接地调用自身的算法。
简单
来说就是一个方法中会重复调用该方法解决问题,直到满足基础部分的条件而输出终止的算法。 2.特点 (1).递归就是在过程或函数里调用自身。 (2).使用
递归算法
必须有一个明确的递归结束条件,即递归出口。(重要) 3.
递归算法
的优缺点 优点:使用
递归算法
,代码更加简洁,程序自动在方法中调用方法,不需要额外大量代码。 缺
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章