#思路
1、 结点类:
属性:数据,孩子结点列表
功能1:认孩子: 前提:在父子都是结点的情况下
2. 树类:
属性:根节点,生成初始化的总结点
功能1:获取初始化后的结点,准备赋值
功能2:设置根节点
功能3:初始化父子节点,然后调用认孩子功能
功能4:为各个id 的结点添加数据
功能5:打印——第一次使用递归思想
先判断,确定根节点,然后打印
接着遍历该节点的孩子列表(此时孩子列表已可泛化)
调用函数,对遍历到的每个节点重复相同功能
python">class TreeNode:def __init__(self):self.data = Noneself.childrenList = []def AddChild(self, tNode):self.childrenList.append(tNode)class Tree:def __init__(self, maxNodes):self.root = Noneself.nodes = [TreeNode() for i 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):pNode = self.GetTreeNode(parentId)sNode = self.GetTreeNode(sonId)pNode.AddChild(sNode)def AssignDate(self, nodeId, data):self.GetTreeNode(nodeId).data = datadef Print(self, node=None):if node == None:node = self.rootprint(node.data, end="")for child in node.childrenList:self.Print(child)def Test():T = Tree(9)T.SetRoot(0)T.AssignDate(0, "a")T.AssignDate(1, "b")T.AssignDate(2, "c")T.AssignDate(3, "d")T.AssignDate(4, "e")T.AssignDate(5, "f")T.AssignDate(6, "g")T.AssignDate(7, "h")T.AssignDate(8, "i")T.AddChild(0, 1)T.AddChild(0, 2)T.AddChild(1, 3)T.AddChild(2, 4)T.AddChild(2, 5)T.AddChild(3, 6)T.AddChild(3, 7)T.AddChild(3, 8)T.Print()Test()