所谓二叉树的左视图,是指打印从左方向看到的二叉树。
根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断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)