code
class BinaryTree: def __init__(self, rootObj): self.key = rootObj self.leftChild = None self.rightChild = None def insertLeft(self, newNode): if self.leftChild == None: self.leftChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.leftChild = self.leftChild self.leftChild = t def insertRight(self, newNode): if self.rightChild == None: self.rightChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.rightChild = self.rightChild self.rightChild = t def getRightChild(self): return self.rightChild def getLeftChild(self): return self.leftChild def setRootVal(self, obj): self.key = obj def getRootVal(self): return self.key # 树的前序遍历 # 树的后序遍历以及中序遍历见ParseTree.py def preorder(self): print(self.key) if self.leftChild: self.leftChild.preorder() if self.rightChild: self.rightChild.preorder() ''' 以下为测试数据, 去掉 # 即可 ''' r = BinaryTree('a') print(r.getRootVal())#a print(r.getLeftChild()) r.insertLeft('b') print(r.getLeftChild()) print(r.getLeftChild().getRootVal())#b r.insertRight('c') print(r.getRightChild()) print(r.getRightChild().getRootVal())#c r.getRightChild().setRootVal('hello') print(r.getRightChild().getRootVal())#hello print(r.getLeftChild().getRootVal())#b print("*"*10) print("preorder",r.preorder())
outputs
macname@MacdeMBP ~ % python3 test.py a None <__main__.BinaryTree object at 0x102c9aba8> b <__main__.BinaryTree object at 0x102c9abe0> c hello b ********** a b hello preorder None macname@MacdeMBP ~ %