`

tree递归算法

阅读更多

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Student.Models;
using Student.BLL;
using System.Collections.Generic;
public partial class SysFunTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        LoginInfo user = Session["CurrentUser"] as LoginInfo;
        if (!Page.IsPostBack)
        {
        

            DisplayUserMenu(user);
         

        }
    }
    protected void DisplayUserMenu(LoginInfo user)
    {
        tvUserRightMenu.Nodes.Clear();

        IList<SysFun> parentSysFun = SysFunManager.GetAllByTiaojian(user.URole.RoleId);
        if (parentSysFun.Count != 0)
        {
            foreach (SysFun sfParent in parentSysFun)
            {

                string nodeId = sfParent.NodeId.ToString();//第一层节点id
                string displayName = sfParent.DisplayName;//
第一层节点显示名称

                TreeNode fatherNode = this.CreatTreeNode(displayName, nodeId, "", "Image/fclose.gif");//根据节点信息,创建第一层节点

                CreateChildTree(sfParent.NodeId.ToString(), user.URole.RoleId, fatherNode);//创建子节点

                tvUserRightMenu.Nodes.Add(fatherNode);//将第一层节点加入到用户权限TreeView

            }
        }
        else
        {
            Response.Write("<script>alert('
您没有这些权限!
')</script>");
        }
     
    }

    //创建第二层节点
    private void CreateChildTree(string nodeId, int roleId, TreeNode fatherNode)
    {
        IList<SysFun> childSysFun = SysFunManager.GetAllZiByFu(Convert.ToInt32(nodeId), roleId);//
获得父节点为nodeId的所有子节点

        foreach (SysFun sfChild in childSysFun)
        {
            string childNodeId = sfChild.NodeId.ToString();//
第二层节点
id
            string childDisplayName = sfChild.DisplayName;//
第二层节点名称

            string nodeURL = ResolveUrl(sfChild.NodeURL.Trim());//
将路径转换为在客户端可用的URL

            TreeNode childNode = this.CreatTreeNode(childDisplayName, childNodeId, nodeURL, "Image/doc.gif");//根据节点信息,创建第二层节点
            AddTree(fatherNode, childNode);//
将子节点加入到父节点中
        }
    }


    /// <summary>
    ///
创建一个树节点,返回一个树节点对象,参数内容是:
    ///
节点名称,节点ID,链接地址,正常图标,展开后的图标
    /// </summary>
    private TreeNode CreatTreeNode(string strText, string strId, string strUrl, string strImg)
    {
        TreeNode newNode = new TreeNode();
        newNode.Text = strText;
        newNode.Value = strId;
        newNode.NavigateUrl = strUrl;
        newNode.ImageUrl = strImg;
        return newNode;
    }

    /// <summary>
    ///
把子节点添加到父节点当中

    /// </summary>
    private void AddTree(TreeNode FatherNode, TreeNode ChildNode)
    {
        FatherNode.ChildNodes.Add(ChildNode);
    }


}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构 Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理...

    二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。

    根据给定文件的信息,本文将详细介绍二叉树与树之间的转换方法,并且深入探讨树的前序、中序、后序遍历递归与非递归实现方式,以及层次遍历的非递归算法实现。 ### 二叉树与树的转换 在计算机科学中,树是一种常用...

    自制无限级tree(采用递归算法)

    在这个场景中,我们讨论的是使用递归算法来实现无限级树。递归是一种强大的编程技术,通过函数调用自身来解决问题或执行任务,特别适合处理层次结构的问题。 首先,我们需要理解递归的基本概念。递归由两部分组成:...

    中序遍历二叉树的递归算法

    ### 中序遍历二叉树的递归算法 #### 知识点概述 本文将详细介绍如何使用递归方法实现二序遍历二叉树,并解释其背后的原理与应用场景。 #### 二叉树简介 二叉树是一种数据结构,其中每个节点最多有两个子节点:左...

    tree递归.rar

    "Tree递归.rar"这个压缩包文件提供了一个关于如何使用递归算法处理树结构的示例。递归是编程中的一种强大工具,它允许函数或方法调用自身来解决复杂问题。在这个例子中,递归被用来遍历和操作树结构。 首先,我们来...

    树的遍历前序后序递归算法、层序非递归算法

    本节将详细介绍树的前序、后序递归算法以及层序非递归算法,并探讨如何在Java中实现这些算法。 首先,我们要理解树的基本概念。树由若干个节点组成,每个节点可以有零个或多个子节点。在树的遍历过程中,我们需要...

    C++基于递归和非递归算法求二叉树镜像的方法

    基于递归和非递归算法求二叉树镜像的方法 本文主要介绍了C++语言中基于递归和非递归算法求二叉树镜像的方法。二叉树镜像是指将二叉树的左右子树交换,使其成为镜像的过程。本文将详细讲述递归和非递归算法的实现与...

    树的遍历前序后序递归算法、层序非递归算法。

    这里我们将重点讨论前序、后序递归算法以及层次(层序)非递归算法,并基于Java语言进行解析。 首先,我们来看树的存储结构。在Java中,通常使用二叉链表(Binary Link List)来表示树结构。`CSNode.java`可能定义...

    实验2 二分检索的递归与迭代算法设计&#40;报告&#41;.doc

    二分检索算法可以分为递归算法和迭代算法两种。递归算法是一种top-down的算法,通过将问题分解成小问题,最后将结果合并以得到最终结果。迭代算法是一种bottom-up的算法,通过不断地迭代,直到找到目标元素。 在...

    python实现FP-TREE挖掘算法

    FP-TREE(频繁模式树)是一种在数据挖掘领域用于发现关联规则的高效算法,尤其适用于处理大规模高频率项集的数据。Python作为一种强大的编程语言,因其易读性与丰富的库支持,成为了实现FP-TREE算法的理想选择。在这...

    tree easyui java 树递归

    总的来说,这个项目涵盖了Java Web开发中的一些核心知识点,包括但不限于:EasyUI的使用、SpringMVC的Controller设计模式、JdbcTemplate进行数据库操作以及递归算法处理树形数据。理解这些知识点对于开发类似功能的...

    Tree使用递归显示

    在IT领域,尤其是在Web开发中,使用ASP.NET...总的来说,"Tree使用递归显示"是一个涉及数据结构、数据库操作、ASP.NET控件使用和递归算法的综合问题,理解和掌握这些知识点对于开发高效且用户友好的Web应用至关重要。

    JavaScript递归算法生成树形菜单

    JavaScript递归算法生成树形菜单是一种常见的编程技巧,主要用于处理具有层级关系的数据,例如网站的导航菜单、组织结构等。在本示例中,我们看到如何利用递归方法将一个对象数组转换为HTML的树形结构,从而在网页上...

    遍历二叉树的4个非递归算法.rar_binary tree_二叉树_二叉树 非递归 遍历_递归_遍历 CSharp

    本资源"遍历二叉树的4个非递归算法.rar"提供了C#语言实现的这四种非递归遍历方法,对于学习者来说是非常宝贵的资料。 1. **前序遍历**(Root-Left-Right): 在前序遍历中,我们首先访问根节点,然后递归地遍历左...

    C++二叉树非递归以及递归算法

    3.使用递归 先序遍历一棵二叉树 4.使用递归 中序遍历一棵二叉树 5.使用递归 后序遍历一棵二叉树 6.使用非递归 先序遍历一棵二叉树 7.使用非递归 中序遍历一棵二叉树 8.使用非递归 后序遍历一棵二叉树 PS:代码为C++...

    Apriori算法与FPtree算法的探讨

    FPtree算法采用一种递归的模式增长策略,将事务数据库压缩为一棵只包含频繁项的树结构,从而避免了频繁生成候选集的过程,显著提高了挖掘速度。 ##### 基本思想 FPtree算法的核心在于构建一个树形结构,树的节点...

    fp-tree算法程序

    FP-Tree(频繁模式树)算法是数据挖掘领域中用于发现频繁项集的一种高效方法,尤其在处理大规模数据集时表现突出。C#是一种广泛使用的编程语言,它提供了丰富的库和工具来支持各种领域的开发,包括数据挖掘。下面将...

    后序遍历该二叉树的非递归算法

    ### 后序遍历该二叉树的非递归算法 #### 1. 理解题目背景 在计算机科学中,二叉树是一种常用的数据结构。它具有丰富的应用场景,如搜索、排序等。二叉树可以有多种遍历方式,包括前序遍历、中序遍历和后序遍历。...

    web中用静态树和递归算法制作动态树

    本文将探讨如何使用JSP、JavaScript(JS)和POJO(Plain Old Java Object)技术,结合递归算法,将静态树转换为动态树。 首先,我们需要一个存储节点信息的数据库。例如,我们可以创建一个包含ID、PID(Parent ID)...

Global site tag (gtag.js) - Google Analytics