C# 反向递归(逆向)
我们大多数做的树递归都是正向的,一般是从根节点开始向下递归子节点。大家有没有反向的递归方法呢?就是从叶子节点开始递归,最后到根节点。
我有一个对象 Department部门类 它里面有几个属性 ID,Name,PId,IsLeafNode,ChildNode
List<Department> 集体中已经包含有根节点数据和叶子节点数据
现在我可以获取到所有数据中IsLeafNode为1的数据,也就是叶子节点
怎样才能从叶子节点开始递归或得一颗部门树呢 --------------------编程问答-------------------- 可以,google 后序遍历 --------------------编程问答-------------------- 可以一直获取这个叶子节点的父节点直到获取到根节点,然后再递归整棵树……此外我没能想到别的办法了…… --------------------编程问答-------------------- 示例
public void GetRootNode(int childNodeId)--------------------编程问答-------------------- 大家有没有实例代码。就是想实现使用反向递归得到跟正向递归一样的数据结构 --------------------编程问答--------------------
{
string sql = string.Format("select * from Department where parentId={0}", childNodeId);
////执行查询
int currentId=0;//执行查询找到当前节点
int currentParentId = 0;//执行查询找到当前节点的父节点
if (currentParentId == 0)//如果向上为根,则返回
{
//创建节点并返回
return;
}
else
{
//创建节点,并继续递归
GetRootNode(currentId);
}
}
我怎样才能让这个递归后的数据加入到List<Department>集合中呢?最后的结果应该让List<Department>的Count为1.其他就是一个Department 然后他下面有ChildNode,以此类推 --------------------编程问答-------------------- 如果你的数据都有了,而且结点的设计又有你说的parentID, childnode.
那这些数据已经是一棵树了,你还想再递归什么,得到什么树? --------------------编程问答--------------------
明白你的意思了。你是从数据库里面取数据的。 --------------------编程问答--------------------
我所得到的数据其实就是一张二维表的数据,没有层次结构。想得到有层次结构的数据。因为父节点需要把子节点的数据求和,所以才想到使用反向递归 --------------------编程问答--------------------
把帖子结了,我写给你。 --------------------编程问答-------------------- 递归就是递归,没有什么正向反向之分 --------------------编程问答-------------------- 前序或后序遍历? --------------------编程问答--------------------
我们大多数做的树递归都是正向的,一般是从根节点开始向下递归子节点。
大家有没有反向的递归方法呢?就是从叶子节点开始递归,最后到根节点。
我有一个对象 Department部门类 它里面有几个属性 ID,Name,PId,IsLeafNode,ChildNode
List<Department> 集体中已经包含有根节点数据和叶子节点数据
现在我可以获取到所有数据中IsLeafNode为1的数据,也就是叶子节点
怎样才能从叶子节点开始递归或得一颗部门树呢
你的脑筋一定是有些生锈了。从某个节点id开始,你可以循环地查询其PId(作为ID进行循环),直到找到跟节点的ID,然后就开始递归地创建树。 --------------------编程问答-------------------- 如果你一定要搞什么递归,搞什么“自底向上”拼凑算法,实际上代码很麻烦、开发效率和可维护性都很低。但是也不复杂。
补充:.NET技术 , C#