无限极分类的数据结构

博客探讨了无限极分类在数据结构上的实现问题,分析了以Tree结构为基础的分类方式存在的问题,如时间复杂度高,不适合大量数据。接着讨论了两种改进方案,包括在原有设计上的优化和采用二叉树结构,对比了它们在遍历效率上的差异,证明了二叉树在性能上的优越性,并提供了相关代码实现链接。
摘要由CSDN通过智能技术生成

无限极分类,显而易见,需要使用Tree作为数据结构

最直观的设计是:

Class Node{

    private $id;
    
    private $cid;
    
    //略去getter&setter
}

id:该节点的id

cid:该结点的child id

由于需要将该数据结构存入到关系型数据库,且每个节点的child节点数量是不定的,所以这种结构不可用

1.糟糕的设计

 1.1 

Class Node{

    private $id;
    
    private $pid;
    
    //略去getter&setter
}
pid:该节点的parent id

在一棵树里,每个节点至多拥有一个parent节点。所以这种结构是可行的。

源码由http://www.yiichina.com/code/974提供。

测试代码为

$list = [];
$n = 1000;
//构造list
for($i=1;$i<n;$i++){

    $rand = mt_rand(0, $i-1);
    $list[] = ['id'=>$i,'pid'=>$rand];
    
}
$cat = new Category($list);

//输出
$time
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值