class BinaryTree: '''定义一个树''' def __init__(self): self.val = None self.left = None self.right = None '''前序遍历建树''' def bulidTree(self,arrs): if not len(arrs): return None if arrs[0] == None: self.val = None arrs.pop(0) return else: self.val = arrs[0] arrs.pop(0) self.left = BinaryTree() self.right = BinaryTree() self.left.bulidTree(arrs) self.right.bulidTree(arrs) '''层序遍历建树''' def levelBulidTree(self,arrs): #递归建树 def add(self,val): queue = [self] while len(queue): head = queue[0] queue.pop(0) if head.left == None: head.left = BinaryTree() head.left.val = val return elif head.right == None: head.right = BinaryTree() head.right.val = val return else: queue.append(head.left) queue.append(head.right) if not len(arrs): return None self.val = arrs[0] for i in range(1,len(arrs)) : add(self,arrs[i]) '''前序遍历树''' def preTravel(self): if self.val == None or self.val == 'null': print(self.val,end = ' ') return else: print(self.val,end = ' ') if self.left != None: self.left.preTravel() if self.right != None: self.right.preTravel() a = BinaryTree() arrs = [5,1,4,'null','null',3,6] a.levelBulidTree(arrs) a.preTravel()
python 层序遍历建树
于 2022-03-16 20:44:31 首次发布