classnode(object):def __init__(self,data=None,left=None,right=None):
self.data=data
self.left=left
self.right=right#深度
defdepth(tree):if tree==None:return0
left,right=depth(tree.left),depth(tree.right)return max(left,right)+1
#前序遍历
defpre_order(tree):if tree==None:return
printtree.data
pre_order(tree.left)
pre_order(tree.right)#中序遍历
defmid_order(tree):if tree==None:returnmid_order(tree.left)printtree.data
mid_order(tree.right)#后序遍历
defpost_order(tree):if tree==None:returnpost_order(tree.left)
post_order(tree.right)printtree.data#层次遍历
deflevel_order(tree):if tree==None:returnq=[]
q.append(tree)whileq:
current=q.pop(0)printcurrent.dataif current.left!=None:
q.append(current.left)if current.right!=None:
q.append(current.right)