#usr/bin/python #-*-coding:utf-8-*- class Tree: childToParent=None parentToChildren=None #获取父节点 def add(self,parent,child): if self.childToParent is None: self.childToParent={child:parent} else: self.childToParent[child]=parent if self.parentToChildren is None: self.parentToChildren={parent:[]} children=self.parentToChildren.get(parent,[]) if len(children)==0: self.parentToChildren[parent]=children children.append(child) # 获取所有子节点 def getParent(self,child): return self.childToParent.get(child,"没有父亲的节点") def getChildren(self,parent): return self.parentToChildren.get(parent,"没下级") #获取所有祖先节点 def getZuXian(self,zisun): parent=self.getParent(zisun) if parent is None: return [] zupu=self.getZuXian(parent) zupu.append(parent) return zupu #获取所有子孙节点 def zisun(self,zs,zu): children=self.getChildren(zu) if children == "没下级": return for c in children: self.zisun(zs,c) zs.extend(children) #获取所有兄弟节点 def getSiBling(self,s): parent=self.getParent(s) children=self.getChildren(parent) children.remove(sibling) return children if __name__=='__main__': #添加节点内容 tree=Tree() #添加祖籍节点 tree.add(None,"学校") #添加父级节点 tree.add("学校","商学院") tree.add("学校","法学院") tree.add("学校","电子学院") tree.add("学校","计算机学院") #添加子孙节点 tree.add("计算机学院","软件") tree.add("计算机学院","网络") tree.add("计算机学院","数据") tree.add("网络","网1") tree.add("网络","网2") tree.add("网络","网3") #根据当前节点获取父节点 网络 child="网3" parent=tree.getParent(child) print('{1}的上级是:{0}'.format(parent,child)) #根据当前节点获取所有子节点 parent="计算机学院" children=tree.getChildren(parent) print("{0}的子集是:{1}".format(parent,children)) #根据当前节点获取所有祖先节点 网3 zisun="网3" zuxuan=tree.getZuXian(zisun) print('{0}的祖先是:{1}'.format(zisun,zuxuan)) #根据当前节点获取所有子孙节点 学校 zu='学校' zs=[] tree.zisun(zs,zu) print('{0}的子孙是:{1}'.format(zu,zs)) #根据当前节点获取所有兄弟节点 sibling='法学院' rs=tree.getSiBling(sibling) print('{1}的兄弟是:{0}'.format(rs,sibling))
运行结果:
网3的上级是:网络
计算机学院的子集是:['软件', '网络', '数据']
网3的祖先是:['学校', '计算机学院', '网络']
学校的子孙是:['网1', '网2', '网3', '软件', '网络', '数据', '商学院', '法学院', '电子学院', '计算机学院']
法学院的兄弟是:['商学院', '电子学院', '计算机学院']
Process finished with exit code 0
来源:CSDN
作者:Fightingn吧
链接:https://blog.csdn.net/qq_42108199/article/details/80630399