Python通过嵌套列表实现树

嵌套列表实现树

在用嵌套列表实现树时,我们将用Python 的列表数据结构来编写上面定义的功能。虽然把界面写成列表的一系列方法与我们已实现的其他抽象数据类型有些不同,但这样做的是有趣的,因为它为我们提供一个简单、可以直接检查的递归数据结构。
在这里插入图片描述

在列表实现树时,我们将存储根节点的值作为列表的第一个元素。列表的第二个元素是一个表示其左子树的列表,第三个元素是表示其右子树的另一个列表。
嵌套列表法的一个非常好的特性是子树的结构与树相同;这个结构本身是递归的。
例子给出一个简单的树以及相应的列表实现。

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

def insert_left(root, new_branch):
	t = root.pop(1)
	if len(t) > 1:
		root.insert(1, [new_branch, t, []])
	else:
		root.insert(1, [new_branch, [], []])
	return root

def insert_right(root, new_branch):
	t = root.pop(2)
	if len(t) > 1:
		root.insert(2, [new_branch, [], t])
	else:
		root.insert(2, [new_branch, [], []])
	return root

def get_root_val(root):
	return root[0]

def set_root_val(root, new_val):
	root[0] = new_val

def get_left_child(root):
	return root[1]

def get_right_child(root):
	return root[2]

r = binary_tree(3)
insert_left(r, 4)
insert_left(r, 5)
insert_right(r, 6)
insert_right(r, 7)
l = get_left_child(r)
print(l)
set_root_val(l, 9)
print(r)
insert_left(l, 11)
print(r)
print(get_right_child(get_right_child(r)))
[5, [4, [], []], []]
[3, [9, [4, [], []], []], [7, [], [6, [], []]]]
[3, [9, [11, [4, [], []], []], []], [7, [], [6, [], []]]]
[6, [], []]
[Finished in 0.1s]

注:素材来源于《数据结构与算法(Python版)》,授课人:北京大学陈斌教授。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JaquesJames

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值