python实现抽象数据类型=>树

class TreeNode:
	"""
	节点类
	"""
	def __init__(self):
		self.data = None
		self.childrenList = []
		
	def AddChildNode(self, tNode):
		"""
		给当前节点添加子节点
		"""
		self.childrenList.append(tNode)
		
class Tree:
	"""
	树类
	"""
	def __init__(self, maxNodes):
		self.root = None
		self.nodes = [TreeNode() for _ in range(maxNodes)]
		
	def GetTreeNode(self, id):
		"""
		根据节点索引获取节点
		"""
		return self.nodes[id]
		
	def SetRoot(self, rootId):
		"""
		设置树的根节点
		"""
		self.root = self.GetTreeNode(rootId)
		
	def AddChild(self, parentId, sonId):
		"""
		根据父节点的id代表的节点添加子节点id代表的节点
		"""
		pNode = self.GetTreeNode(parentId)
		sNode = self.GetTreeNode(sonId)
		pNode.AddChildNode(sNode)
		
	def AssignData(self, nodeId, data):
		"""
		给指定节点id的节点设置数据
		"""
		self.GetTreeNode(nodeId).data = data
		
	def Print(self, node=None):
		"""
		根据深度优先算法打印输出树的数据
		"""
		if node == None:
			node = self.root
		print(node.data, end='')
		for i in node.childrenList:
			self.Print(i)
		
def test():
	t = Tree(9)
	t.SetRoot(0)
	t.AssignData(0, 'a')
	t.AssignData(1, 'b')
	t.AssignData(2, 'c')
	t.AssignData(3, 'd')
	t.AssignData(4, 'e')
	t.AssignData(5, 'f')
	t.AssignData(6, 'g')
	t.AssignData(7, 'h')
	t.AssignData(8, 'i')
	t.AddChild(0,1)
	t.AddChild(0,2)
	t.AddChild(1,3)
	t.AddChild(3,6)
	t.AddChild(3,7)
	t.AddChild(3,8)
	t.AddChild(2,4)
	t.AddChild(2,5)
	t.Print()
	
test()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值