二叉树的左视图和右视图

所谓二叉树的左视图,是指打印从左方向看到的二叉树。

根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断level == len(stack)时,先遍历左子树则保证层数与数组长度相等时遍历的是每一层的第一个节点

同理,在右视图中,在判断level == len(stack)时,先遍历右子树保证层数与数组长度相等时遍历的是每一层的最后一个节点

 

def view(root):
    if root == None:
        return
    level = 0
    stack = []
    #rightview(root,stack,level)
    leftview(root,stack,level)
    print stack
#二叉树左视图
#打印每一层的第一个节点
def leftview(root,stack,level):
    if root == None:
        return
    if level == len(stack): #判断是不是每一层的第一个节点
        stack.append(root.value)
    leftview(root.left,stack,level+1)
    leftview(root.right,stack,level+1)

#二叉树右视图
#打印每一层的最后一个节点
def rightview(root,stack,level):
    if root == None:
        return
    if level == len(stack): #判断是不是每一层的最后一个节点
        stack.append(root.value)

    rightview(root.right,stack,level+1)
    rightview(root.left,stack,level+1)

 

posted @ 2018-09-17 15:59  放空自己  阅读(6677)  评论(0编辑  收藏  举报