python 树结构 转换 list_树转列表的实现思路与代码

本文介绍了如何将树结构转换为列表结构,分别通过深度优先和广度优先遍历的方法,详细阐述了遍历思路及代码实现。深度优先采用递归,而广度优先则利用一层循环并在循环中修改列表。文章提供了测试数据和完整代码。
摘要由CSDN通过智能技术生成

背景

之前写了一篇列表转树的文章,有列表转树的需求自然就会有树转列表的需求,这里我把树转列表的思路与代码再整理一下。

思路分析

需求是什么?

老规矩,上图

先说一下整体思路,就是遍历树中的每一个节点,在遍历过程中要把节点的父节点id记录下来,并作为该节点的parentId属性值(保留层级关系,后续根据这个parentId和节点的id可以转回树结构),然后把该节点存入一个列表中。遍历过程完成,也就实现了把树结构转换成了列表结构。

树的遍历方式有两种,一种是深度优先遍历,一种是广度优先遍历,这两种方式思路如下图所示:

广度优先:

深度优先

思路看这两个图应该理得清楚了

我这里深度优先遍历采用了递归的方式,然后广度优先遍历采用了循环的方式。

执行步骤

先说深度优先吧:

从第一层开始遍历,遍历该层中所有节点,为每一个遍历到的节点添加上parentId属性,存入结果列表。

每一个遍历节点存入结果列表后,检测该节点是否存在子节点,如果存在,则将子节点作为数据源重复第一步

当所有的节点都处理完成后,整个树结构也就完成了转化

再说说广度优先:

从第一层开始遍历,遍历该层中所有节点&#x

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值