逆向递归,给一个完整的树,找对应的部门树

递归找到树 找到部门 树

构建一棵树 很简单,只要有parentId,很简单递归 就能构建好这棵树,今天来讲 怎么样 递归从树中 找到这个 对应 id 的树,比如传入 部门id 找到 这个部门树,逆向递归。

/**
	 * 获取用户部门树
	 * @param treeList
	 * @return
	 */
	private Tree<Long> getUserDeptTree(List<Tree<Long>> treeList,Long deptId){
		if(!CollectionUtils.isEmpty(treeList)) {
			for (int i = 0; i < treeList.size(); i++) {
				Tree<Long> tree = treeList.get(i);
				List<Tree<Long>> children = tree.getChildren();
				if (Objects.equals(tree.getId(), deptId) && !CollectionUtils.isEmpty(children)) {
					return tree;
				}
				return getBuildUserDeptTree(children,deptId);
			}

		}
		return new Tree<>();
	}
	
	/**
	 * 递归找到部门树
	 * @param children
	 * @param deptId
	 * @return
	 */
	private Tree<Long> getBuildUserDeptTree(List<Tree<Long>> children,Long deptId){
		Tree<Long> result =  new Tree<>();
		if(!CollectionUtils.isEmpty(children)){
			for (int i = 0; i < children.size(); i++) {
				Tree<Long> tree = children.get(i);
				List<Tree<Long>> childrenTree = tree.getChildren();
				if (Objects.equals(tree.getId(), deptId) && !CollectionUtils.isEmpty(children)) {
					return tree;
				}
				Tree<Long> userDeptTree = getBuildUserDeptTree(childrenTree, deptId);
				if(!CollectionUtils.isEmpty(userDeptTree)){
					return userDeptTree;
				}
			}
		}

		return result;
	}
posted @ 2022-11-08 15:52  川流不息&  阅读(67)  评论(0编辑  收藏  举报