二叉树定义
class BinTNode(object):
def __init__(self,dat,left = None,right = None):
self.data = dat
self.left = left
self.right = right
def count_BinTNodes(t):
if t is None:
return 0
else:
return 1 + count_BinTNodes(t.left) + count_BinTNodes(t.right)
def sum_BinTNode(t):
if t is none:
return 0
else:
return t.dat + sum_BinTNode(t.left) + sum_BinTNode(t.right)
t = BinTNode(1,BinTNode(2),BinTNode(3))
count = count_BinTNodes(t)
print(count)
二叉树遍历
class TreeNode(object):
def __init__(self,data = 0,left = 0,right = 0):
self.data = data
self.left = left
self.right = right
class BTree(object):
"""docstring for BTree"""
def __init__(self, root=0):
self.root = root
def is_empty(self):
if self.root is 0:
return True
else:
return False
def preOrder(self,treenode):
if treenode is 0:
return
print(treenode.data,end = ',')
self.preOrder(treenode.left)
self.preOrder(treenode.right)
def inOrder(self,trennode):
if trennode is 0:
return
self.inOrder(trennode.left)
print(trennode.data,end = ',')
self.inOrder(trennode.right)
def postOrder(self,treenode):
if treenode is 0:
return
self.postOrder(treenode.left)
self.postOrder(treenode.right)
print(treenode.data,end = ',')
n1 = TreeNode(data =1)
n2 = TreeNode(2,left = n1,right = 0)
n3 = TreeNode(3)
n4 = TreeNode(4)
n5 = TreeNode(5,n3,n4)
n6 = TreeNode(6,n2,n5)
n7 = TreeNode(7,n6,0)
n8 = TreeNode(data = 8)
root = TreeNode('root',n7,n8)
bt = BTree(root)
print("先序遍历:")
print(bt.preOrder(bt.root))
print("中序遍历:")
print(bt.inOrder(bt.root))
print("后序遍历:")
print(bt.postOrder(bt.root))