`
无量
  • 浏览: 1143407 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

递归计算树结构当前节点包含多少级

阅读更多
今天一个同事做,可变更目录结构时,遇到的计算当前节点包括节点下面一共多少级怎么做,这里写一个两个函数互相递归调用的方法。

如果节点过多,会一直压栈出栈,对栈空间压力大,所以建议,每个节点级数存到key-value缓存中,每次更新时,刷新缓存


计算当前节点,包含多少级
1.如果没有子节点,默认1级
2.有子节点,且只有一层,为2级,以此递推

如图:




	/**
	 * 获取当前节点包含多少级,如果没有子节点-默认1级
	 * @param node
	 * @return
	 */
	public int getContainLevelNum(int node) {

		List<Integer> list = findChildNodeList(node);
		if(CollectionUtils.isEmpty(list)) {
			return 1;
		} else {
			return 1 + getMaxContailLevelNum(list);
		}
		
	}
	
	/**
	 * 获取当前节点子节点List集合
	 */
	public List<Integer> findChildNodeList(int id) {
		return null;
	}
	
	/**
	 * 获取list中包含层级最多的层级数目
	 * @param list
	 * @return
	 */
	public int getMaxContailLevelNum(List<Integer> list) {
		int maxNum = 0;
		for (Integer id : list) {
			int currNum = getContainLevelNum(id);
			maxNum = currNum > maxNum ? currNum : maxNum;
		}
		
		return maxNum;
	}
  • 大小: 5 KB
0
1
分享到:
评论

相关推荐

    树父节点递归获取树子节点

    使用这个工具类时,只需要创建一个树结构,然后调用 `TreeUtils.getAllChildren(rootNode)` 即可得到从指定父节点开始的所有子节点。这种方法的时间复杂度是 O(n),其中 n 是树的节点总数,因为每个节点只被访问一次...

    用递归实现C#树形结构

    总结来说,用递归实现C#树形结构的关键在于理解树的节点结构以及递归函数的设计。通过创建表示节点的类并定义递归遍历方法,我们可以轻松地处理各种树形数据结构的操作。递归方法在处理树形结构时不仅简洁,而且效率...

    Oracle递归树形结构查询功能

    例如,它可以将每个节点的路径作为字符串返回,便于理解和分析树结构。 在实际应用中,例如组织结构的展示,我们可以创建一个包含部门信息的表`SYS_DEPT`,其中`dept_id`为主键,`par_dept_id`表示父级部门ID,以此...

    jpa单表递归树形结构实现

    // 自定义查询获取整个树结构,例如: Optional&lt;Node&gt; findRootNode(); } ``` 实现递归查询通常需要使用递归算法,但SQL不直接支持。我们可以使用存储过程或者在Java代码中处理。例如,可以使用`...

    js 递归json树实现根据子id查父id的方法分析

    本文实例讲述了js 递归json树实现根据子id查父id的方法。分享给大家供大家参考,具体如下: 最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找...

    c#递归树自动树

    根据给定的信息,本文将详细解释C#中的递归树构建方法,并重点解析如何通过递归函数实现自动化的树形结构构建,包括添加父子节点等操作。 ### 一、递归树的概念 在计算机科学中,树是一种常用的数据结构,它由节点...

    java构造多级树结构,支持多根节点

    树结构可以递归地定义,每个节点都可以看作是一个独立的树,其下挂载着子树。 **实现多级树结构** 1. **节点类定义**:首先,我们需要创建一个表示树节点的类,包含节点值、子节点集合以及可能需要的其他属性,如...

    递归操作树

    递归操作树是利用函数自身调用来遍历或操作树结构中的每个节点,通常涉及深度优先搜索(DFS)或广度优先搜索(BFS)。在C#中,递归可以优雅地实现,使得代码简洁易读。 首先,让我们理解什么是树。树是一种非线性的...

    无限级树正向查找、反向查找例子【递归实现】

    无限级树是指具有无限数量层级的树结构,每一层可以有任意数量的子节点。节点之间通过父子关系相连,根节点没有父节点,而叶子节点没有子节点。在实际应用中,通常通过节点对象存储数据,包含节点值、子节点列表等...

    使用递归和dom遍历dom树形结构

    在DOM树的情况下,递归非常适合用来遍历整个树结构,因为它可以深入到树的每一层,确保每个节点都被访问。 #### Java实现示例 以下是一个使用递归和DOM来遍历XML文档的Java代码示例: ```java package ...

    递归和非递归建立树和树的前,中,后,分层遍历

    而四种遍历方式各有特色,能帮助我们以不同视角理解树结构,为解决实际问题提供有力工具。在实际编程中,根据具体需求选择合适的方法是非常关键的。通过熟练掌握这些知识,你可以更好地应对涉及树结构的编程挑战。

    mysql递归调用获取树节点(子树)

    在MySQL数据库中,处理层级关系数据,如组织结构、菜单系统或分类树等,常常需要进行递归查询来获取树状结构的子节点。这里我们将深入探讨如何在MySQL中使用存储过程来实现这一功能。 首先,为了理解这个过程,我们...

    使用递归删除树形结构的所有子节点(java和mysql实现)

    使用递归删除树形结构的所有子节点(java和mysql实现) 在树形结构中删除某个父节点时,需要递归删除其所有子节点,以避免遗留冗余数据。下面将为大家介绍使用 Java 和 MySQL 实现递归删除树形结构的所有子节点的...

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

    在 TreeBuilder 类中,我们定义了几个方法,包括构建树形结构的 buildJSONTree 方法,获取根节点的 getRootNodes 方法,判断是否为根节点的 rootNode 方法,获取父节点下所有的子节点的 getChildNodes 方法等。...

    java树结构递归里面详细说明

    Java树结构递归详细说明 Java树结构是Java后台常用的数据结构,通过递归写成的。树结构的用法实例包括树目录的总结、函数的参数说明、dtree.js文件的默认图片路径、页面中的书写规则、样式表的使用和页面代码书写的...

    递归画树(Qt实现)

    这个过程不仅展示了递归算法在处理树结构的强大能力,还体现了Qt在图形绘制方面的灵活性。通过适当调整节点间的距离、旋转角度或其他视觉效果,我们可以定制出更加美观和易于理解的树状图。在实际应用中,这种技术...

    递归找到当前的节点呈现树形菜单结构

    递归找到当前的节点呈现树形菜单结构,所有的信息存储在一个表中 递归遍历所有节点信息 依次展示所有子节点

    java递归无限层级树

    总之,使用Java递归实现无限层级树的关键在于定义好树节点类,明确生成新节点的条件,以及如何遍历和展示树结构。这样的技术在许多领域都有应用,例如文件系统、组织架构、数据库表的层次关系等。熟练掌握递归处理树...

    C# 递归生成树_TreeView

    在生成树结构时,递归非常适合处理层级关系,因为每一层节点都可以看作是对上一层节点的重复操作。在C#中,我们通常定义一个方法,该方法接受当前节点信息,并递归地处理其子节点。 2. **TreeView控件**: `...

    C# TreeView递归添加子节点

    `TreeNode`代表`TreeView`中的一个节点,它可以有子节点,形成树形结构。为了在`TreeView`中表示文件夹结构,每个`TreeNode`通常对应一个文件夹,而其子节点则代表该文件夹内的子文件夹或文件。 现在我们进入主题,...

Global site tag (gtag.js) - Google Analytics