递归计算层级项目预算(数据结构-树)
来源:互联网 发布:淘宝客还能赚钱吗 编辑:程序博客网 时间:2024/06/05 06:51
*节点定义
data: begin of add_itab occurs 0 ,
node(10) type i,
parentnode(10) type i ,
folder type c ,
data type twaer,
end of add_itab.
data: itab2 like add_itab occurs 0 with header line.
data: total type bp_wjt.
*待处理的数据
data :begin of zs_disp occurs 0,
stufe type prps-stufe,
posid type prps-posid,
post1 type prps-post1,
wtges1 type bpge-wtges,
wtges2 type bpge-wtges,
wtges3 type bpge-wtges,
wtges4 type bpge-wtges,
end of zs_disp.
data :begin of gt_item_d occurs 0.
include structure zs_disp.
data: end of gt_item_d.
*建树
loop at ltmp_gt_item_d into ls_gt_item_d.
lv_c1 = lv_c1 + 1.
add_itab-data = ls_gt_item_d-wtges3.
add_itab-node = lv_c1.
add_itab-folder = 'X'.
if ls_gt_item_d-post1 = ''.
add_itab-parentnode =''.
else.
lv_c2 = 0.
loop at ltmp_gt_item_d into ls_gt_item_d1.
lv_c2 = lv_c2 + 1.
if ls_gt_item_d1-posid = ls_gt_item_d-post1.
add_itab-parentnode = lv_c2.
endif.
endloop.
endif.
clear ls_gt_item_d1.
lv_c = 0.
loop at ltmp_gt_item_d into ls_gt_item_d1.
if ls_gt_item_d1-post1 = ls_gt_item_d-posid.
lv_c = lv_c + 1.
endif.
endloop.
if lv_c = 0.
add_itab-folder = ''.
endif.
if add_itab-folder = 'X'."避免重复累加
clear add_itab-data .
endif.
append add_itab."树
endloop.
以下是树表
*对每个节点值递归累加,结果存入total
loop at gt_item_d[] into ls_gt_item_d.
lv_c = lv_c + 1.
clear total.
perform get_tree_sum using lv_c changing total.
ls_gt_item_d-wtges3 = total.
modify gt_item_d[] from ls_gt_item_d.
endloop.
*以下为递归form,(node为节点index)
form get_tree_sum using value(node) type i
changing sum type bp_wjt.
data: l_sum type bp_wjt.
loop at add_itab where node = node"当为最低叶子节点,则返回当前叶子的值
and folder = ''.
sum = add_itab-data .
endloop.
loop at add_itab where parentnode = node .
clear l_sum.
if add_itab-folder = ''.
sum = sum + add_itab-data .
continue.
endif.
perform get_tree_sum using add_itab-node
changing l_sum.
sum = sum + l_sum.
endloop.
* loop at ADD_itab where parentnode = node .
* if ADD_itab-folder = ''.
* sum = sum + ADD_itab-DATA .
* endif.
* perform GET_TREE_SUM using ADD_itab-node sum.
* endloop.
endform. " GET_TREE_SUM
另外,如果需要能使字段输入负数,需要V,长度不足由“_”填充
- 递归计算层级项目预算(数据结构-树)
- 利用递归形成一个层级树
- 不用递归,C#实现无限层级树
- oracle递归查询(层级查询)
- js项目实战(弹性预算规则)
- 数据结构与算法(用递归算法计算阶乘)
- 数据结构-前序遍历、中序遍历、后序遍历、层级遍历(递归、非递归)
- 递归 删除层级记录
- 二叉树的遍历算法(先序中序后序遍历的递归算法与非递归算法、层级遍历的递归与非递归算法)
- 数据结构第九周项目(二)——二叉树遍历的递归算法
- 第十四周(项目一)--数据结构-递归的折半查找
- 数据结构::递归时间复杂度的计算
- 在同一张表中根据两个父子关系的字段进行递归的层级计算
- 不用递归获取树节点的所有层级子节点
- SqlServer与Linq 无限递归目录树且输出层级
- winform层级树的数据 递归方法加载
- 数据结构之二叉树遍历(递归和非递归)
- 数据结构-二叉树(包含递归和非递归版本)
- oracle
- Servlet实现文件下载
- 经典语录
- Anaconda 的启动参数
- C# 方法中的常见关键字(如:this,default etc.)
- 递归计算层级项目预算(数据结构-树)
- 2011年4月2日
- 完整——第二天 Turbo C 2.0 下载与安装
- Visual C++ 使用的文件
- Setting property 'source' to 'org.eclipse.jst.jee.server:webProject' did not find a matching property
- SQL Server 2005 体系结构
- 通过js实现验证码
- 使用FFMPEG SDK解码流数据获得YUV数据及其大小
- 编码及字符串