链表二叉树BinaryTree
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:
print 'enter create newnode for left'
'''
在有左子节点的情况下,先建一个临时节点,把现有的左子结点值指向临时节点的左子树,再把现有节点的左子树指向临时节点
A.leftchild --> B,newnode(T),T.leftchild=B,A.leftchild --> T
先建新节点T,把原先左子树指向临时节点的左子树,让出坑位,再把父节点的左子对指向T
插入右子树同样道理
'''
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
r = BinaryTree('a')
print(r.getRootVal())
print(r.getLeftChild())
r.insertLeft('b')
print '###'
print(r.getLeftChild())
print '# get left root'
print(r.getLeftChild().getRootVal())
r.insertRight('c')
print(r.getRightChild())
print(r.getRightChild().getRootVal())
r.getRightChild().setRootVal('hello')
print(r.getRightChild().getRootVal())
'''
因为左子树节点的值也是一个类创建的对象,所以不能直接取,只能先取取左子树对象,再用左子树对象的方法 print(r.getLeftChild().getRootVal())
'''