数据结构 python:树简单操作

本文介绍了如何使用Python实现树数据结构的基本操作,包括初始化树、层级遍历、前序遍历、后序遍历以及查找节点等。代码简洁易懂,适用于数据结构的学习和实践。
摘要由CSDN通过智能技术生成

数据结构:树的生成

笔者提供的代码,都是基于python的语言特性实现的,简单明了为上

原始数据

  1. child: 子节点
  2. parent:父节点
  3. 如果parent==child,则为根节点(这里是森林的结构)
child,parent
a,b
b,c
c,c

代码

  1. 初始化树
  2. 层级遍历
  3. 前序遍历、后序遍历
  4. 获取枝干,查找节点
import json

from copy import deepcopy
from collections import defaultdict, OrderedDict


class Tree:
    def __init__(self, par2chi: list, parent_key='parent', child_key='child'):
        """
        有父子结构组成的数据体系,结束标志:obj[self.parent_key] == obj[self.child_key]
        :param par2chi: [{self.parent_key: '', self.child_key: ''}]
        """
        self.child_key = child_key
        self.parent_key = parent_key
        self.tree = self.init_tree(par2chi)

    def __end_signal(self, parent, child):
        """
        结束信号,森林的根节点的标志
        """
        return parent == child

    def init_tree(self, par2chi):
        """
        初始化树结构,主要是利用 python 的语言特性实现的,表面上看,时间复杂度是n,空间复杂度n,n为par2chi的大小
        """
        original = defaultdict(dict)
        original_c = defaultdict(dict)
        for row in par2chi:
            if row[self.child_key] not in original_c:
                original_c[row[self.child_key]] = dict()
            if self.__end_signal(row[self.parent_key], row[self.child_key]):
                original[row[self.parent_key]] = original_c[row[self.child_key]]
            else:
                original_c[row[self.parent_key]][row[self.child_key]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值