树结构之嵌套列表法实现Python

本文介绍了如何利用嵌套列表法在Python中实现树结构,特别是二叉树。通过递归定义,树由根节点和可能的子树组成,子树本身也是树。初始化树通常以[根节点,[],[]]的形式开始。文中详细阐述了插入子树、获取节点值以及修改节点值的方法,并强调了这种实现方式便于理解和可视化树的结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树结构之嵌套列表法实现

除了队列,栈等数据结构,树也是另一种数据结构。最常见的树结构就是家谱了,从祖先开始,若干个儿子,孙子等等。文件系统也是树结构的应用之一。

树用递归的定义来说就是,树有一个根节点,然后(可有可无)有若干个分支(子树),每个子树其实也是一棵树,也有若干个子树。如果每个节点最多有两个分支,那就是二叉树,如果最多有n个分支,那就是n叉树。

我才用列表嵌套的方式实现了二叉树。从递归的形式上说树的列表形式是[根节点,左子树,右子树],而每个子树也是一棵树,所以每棵子树也是一个列表。

这样的话,初始化一棵树,即只有一个根节点,即[根节点,[],[]]的形式。

def BinaryTree(r):
    return [r, [], []]   

然后有插入左子树的方法,插入左子树,要给出插入哪个节点的左子树,即有一个相对节点。而且插入左子树就是如果原始的左子树为空,那就直接插入列表。如果原始的左子树不是空,也就是把原来的左子树的列表直接替换掉,原始的左子树成为新的左子树的左子树。

def insertLeft(root,newBranch):
	# 先把原始的左子树取出来
    t = root.pop(1)
    # 判断原始左子树是否为空
    if len(t) > 1:
        root.insert(1,[newBranch,t,[]])
    else:
        root.insert(1,[newBranch, [], []])
    return root
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值