ASP中这种循环怎么写?今天刚接到的项目
一种金字塔的模式 A
/ \
B C
/ \ / \
E F G H
一开始 E F G H 都是相等的 ,就是说最低一层一开始都是相等
如果E = F,那么 B=B+10
如果G = H,那么 C=C+10
如果B = C,那么 A=A+10
现在如果只有3级 我代码写出来了 关键是如果是N级 这个循环该怎么写?
------解决方案--------------------两张表,一张描述用户树结构的表,一张用户等级表
表一:
id 用户名 level
1 a 0
2 b 0
3 c 0
4 e 0
5 f 0
6 g 0
7 h 0
表二用户树结构的表:
id 用户id 父用户id 节点列表 节点深度
1 1 1 1 0
2 2 1 1,2 1
3 3 1 1,2 1
4 4 2 1,2,4 2
5 5 2 1,2,5 2
6 6 3 1,3,6 2
7 7 3 1,3,7 2
------解决方案--------------------给你个思路,就是查询数据的时候,对查询条件进行判断。既然你已经实现了第一步,第二步很容易就可以弄出来了……当时我只用了不到两小时就搞定了~
------解决方案--------------------不是二叉吧,没有规定一个人只能推荐两个人吧,推荐四个人不行吗?
我觉得你在数据库里解决好点.每个结点加一个权值,权值就其下一级子结点的加权.插入某两个子结点的时候,用递归更新其所有父结点的权值就行了.
------解决方案--------------------当前节点Nn,当前层Ln,
求父节点Parent(N)
子节点集合Children(N)
如果每个节点下最多只能有两个子节点,会相对简单:
1: 当前层的兄弟节点数为2,则继续(可以合并下条规则一起处理)
2: 往上求父节点Ni直至顶Li(Ln--> 1),
遍历树Ni下的所有层次在(Li+1, Ln)之间的子节点总数满足2^(Ln - Li),
则父节点升级,否则退出
这样可以利用数据库查询实现
如果可能出现多子节点:
1: 当前层的兄弟节点数为2,则继续
2: 往上求父节点Ni直至顶Li(Ln--> 1),
遍历树Ni下的所有层次(包括Ni)在(Li, Ln-1)之间的子节点的子节点数> =2,
则父节点升级,即如果 <2则退出
可以考虑用递归实现
优化一点的办法的改进是
2: 往上求父节点Ni直至顶Li(Ln--> 1),
先父节点Ni下的兄弟节点Bi, 如果存在则继续
再处理兄弟节点Bi,如果层次 <Ln则需要,遍历树Bi下的所有层次
在(Li, Ln-1)之间的子节点的子节点数> =2,
则父节点升级,即如果 <2则退出