首页 > 后端开发 > php教程 > php分支树排除某个分支该如何处理?

php分支树排除某个分支该如何处理?

WBOY
发布: 2016-06-06 20:17:53
原创
1258 人浏览过

大家好,本人新手。咨询大家一个问题。

A为金字塔的顶点,下面有初级会员ABCDEF等若干,每个初级会员下面又有初级会员若干,这样一直排列下去。

如图
php分支树排除某个分支该如何处理?

如果E1会员身份升级为一级会员,则A可以获取提成10块钱。

但如果他的上线也就是B1身份为一级会员,则10块钱就归B1.

请问该用何种思路去统计某个时间段内A的提成呢,也就是A的所有分支的提成必须排除掉B1分支里的会员数据。

回复内容:

大家好,本人新手。咨询大家一个问题。

A为金字塔的顶点,下面有初级会员ABCDEF等若干,每个初级会员下面又有初级会员若干,这样一直排列下去。

如图
php分支树排除某个分支该如何处理?

如果E1会员身份升级为一级会员,则A可以获取提成10块钱。

但如果他的上线也就是B1身份为一级会员,则10块钱就归B1.

请问该用何种思路去统计某个时间段内A的提成呢,也就是A的所有分支的提成必须排除掉B1分支里的会员数据。

遍历A的子节点,如果不是一级会员,就加入一个线性表里(表示此节点升格,A可以获得收益),然后继续遍历这个节点

<code>//伪代码 获取到A节点可以获得收益的后辈节点
//topNode为节点对象
function getAllChilds(object topNode){
    static childArr=[];
    foreach(topNode->getAllChilds as index=>tempChildNode){
        //如果当前节点不为一级节点
        if(!tempChildNode->rankIsOne){
            array_push(childArr,tempChildNode);
            getAllChilds(tempChildNode);
        }
    }
    return childArr;
}</code>
登录后复制

不过看题目是某个时间段A的提成,意思好像是节点树各个节点的rank是会变动的,这个就有点难了
或者在每次节点升格的时候,都算一次收益,以及收益节点,以及时间,写入数据库。这样查询就只需要一条SQL语句了

遍历所有节点,把父节点为你要求的一级会员的分支从树中去掉不就行了么。……

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板