/**
* 根据树的根节点递归获取所有叶子节点
*
* @param pid
* @return
*/
public static void getleafGenericvalue(Delegator delegator, String pid) {
List<GenericValue> partys;
GenericValue party;
try {
partys = delegator.findByAnd("PartyGroup", UtilMisc.toMap("parentId", pid));
party = delegator.findByPrimaryKey("PartyGroup", UtilMisc.toMap("partyId", pid));
if (partys.size()<=0) {
map2.put(pid, party);
}
if (partys.size()>0) {
map.put(pid, party);
}
if (map.size() != 0) {
getGv(delegator);
}
} catch (GenericEntityException e) {
ServiceUtil.returnError(e.getMessage());
}
}
public static void getGv(Delegator delegator) {
List<GenericValue> partys;
GenericValue party;
List l = new ArrayList();
try {
for (Map.Entry<String, GenericValue> entry : map.entrySet()) {
partys = delegator.findByAnd("PartyGroup", UtilMisc.toMap("parentId", entry.getKey()));//找子级中没有结算权限的商户,直到叶子
party = delegator.findByPrimaryKey("PartyGroup", UtilMisc.toMap("partyId", entry.getKey()));
if (partys.size()<=0 && !"Y".equals(party.getString("isSettlement"))) {
map2.put(entry.getKey(), party);
}
if (partys.size()>0) {
map.put(entry.getKey(), party);
for(GenericValue pt : partys){
if(!"Y".equals(pt.getString("isSettlement"))){
map.put(pt.getString("partyId").toString(), delegator.findByPrimaryKey("PartyGroup", UtilMisc.toMap("partyId", pt.getString("partyId").toString())));
}
}
}
l.add(entry.getKey());
}
if (l.size() != 0) {
for (int p = 0; p < l.size(); p++) {
map.remove(l.get(p));
}
}
if (map.size() != 0) {
getGv(delegator);
}
} catch (GenericEntityException e) {
ServiceUtil.returnError(e.getMessage());
}
}
分享到:
相关推荐
输出树的根节点到叶子节点的所有路径,用递归实现
代码 博文链接:https://blueskylan.iteye.com/blog/848447
给定一个二叉树,使用“非递归方法”找出所有叶节点之间的长路径,如有疑问,可咨询QQ1871465933,添加请注明来源。
1. 将提供的字符串(自定义字符串)进行排序,获取各个字符的权重; 2. 将字符及对应的权重放入树节点(node)中,用链表将各个节点有序的(按... 用递归得到叶子节点,由叶子节点追溯到根节点,得到编码后反转顺序;
二叉树是n(n>=0)个结点的有限集合,该集合或者为空集,或者有一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。 二叉树具有五种基本形态: 1、空二叉树; 2、只有一个根结点; 3、根结点...
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。示例 1:输出:3示例 2:输出:5// Definition for a Node.vector<N
- 建立叶子节点:当达到最小划分单元或满足终止条件时,将叶子节点标记为最终区域,并将相关的游戏对象存储在该节点中。 - 碰撞检测和剔除:使用四叉树可以有效进行碰撞检测和可视化剔除。通过判断物体所属的...
二叉树的深度指的是从根节点到叶子节点的最长路径,也可以定义为根节点到最深叶子节点的路径长度。以下是两种方法来求二叉树的深度,递归和迭代,并附带 C、Java 和 Python 语言的代码实现。
2、如果不是叶子节点,我们分别对根节点的左子树、右子树进行递归,直到找到叶子结点。然后遍历把叶子结点和父节点对应的val组成的序列返回上一层;如果没找到路径,其实也返回了序列,只不过是[] 代码如下: # -*-...
C语言数据结构二叉树简单应用 ...(6)输出每个叶子结点到根节点的路径 (7)输出根结点到每个叶子结点的路径。 定义二叉树结点类型的结构体 typedef struct node{ char data; struct node *Lchild;
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。递归解法* Definition for a binary tre
无论怎样构造的完全二叉树,根节点左边的左子树和右边的右子树又都是完全二叉树, 那么n个节点的完全二叉树构造方法数等于左子树的构造方法数乘以右子树的构造方法数, 且要列举所有可能的左子树和右子树情况,而后...
3、调用计算二叉树的结点总数、深度、叶子节点个数算法,统计上述二叉链表树的结点总数、深度、叶子节点总数,从屏幕显示。 4、编写按照层次遍历二叉树的算法,并显示遍历后的结点序列。(利用队列) 5、编写算法...
1. 选择阶段:搜索树以当前棋面状态为根节点开始,通过递归地应用子选择策略遍历树,直到到达一个还不属于搜索树的位置,即未被扩展过的节点。被选择的子节点表示在当前棋面状态下的最优选择。 2. 扩展阶段:根据可...
词法分析模块可以扫描语法文本,发现不符合定义的词素会根据格式报告相关错误,符合定义的词素则执行相应动作创建语法书叶子节点并返回词法单元。 2 语法分析 语法分析模块以基本语法规则为基础,加入了对左右结合、...
新插入的结点一定是一个新添加的叶子节点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。 插入算法: 首先执行查找算法,找出被插结点的父亲结点; 判断被插结点是其父亲结点的左、右...
//根节点入队 while (!Q.isEmpty()) { BinTreePosition u = (BinTreePosition) Q.dequeue();//出队 list.insertLast(u);//访问v if (u.hasLChild()) Q.enqueue(u.getLChild()); if (u.hasRChild()) Q....
当又有一个数据点要插入树中时,把这个点封装为一个MinCluster(这样它就有了一个CF值),把新到的数据点记为CF_new,我们拿到树的根节点的各个孩子节点的CF值,根据D2来找到CF_new与哪个节点最近,就把CF_new加入...
9、求叶子节点数" 10、求节点总数 11、求二叉树中度为1的节点总数 12、求二叉树中度为2的节点总数 13、求二叉树的高度 14、按值查找节点并输出其孩子 15、交换二叉树的左右子树 16、二叉树的删除(递归实现) 0、退出...
无论怎样构造的完全二叉树,根节点左边的左子树和右边的右子树又都是完全二叉树, 那么n个节点的完全二叉树构造方法数等于左子树的构造方法数乘以右子树的构造方法数, 且要列举所有可能的左子树和右子树情况,而后...