按层次遍历二叉树与求二叉树深度

按层细遍历二叉树
思路:利用队列的先进先出思想,将节点一次存入队列,递归弹出遍历直至队列为空,代码如下:

class node:   #树节点
    def __init__(self,data=None,left=None,right=None):
        self.data=data
        self.left=left
        self.right=right
def level_order(tree):  #按层次遍历
    if tree==None:
        return
    q=[]
    q.append(tree)
    while q:
        tmp=q.pop(0)
        print tmp.data
        if tmp.left!=None:
            q.append(tmp.left)
        if tmp.right!=None:
            q.append(tmp.right)

求二叉树的深度
思路:通过递归,如果节点不为空,左右度较深的深度加一,代码如下:

def depth(tree):
    if tree==None:
        return 0
    left,right=depth(tree.left),depth(tree.right)
    return max(left,right)+1