zoukankan      html  css  js  c++  java
  • 二叉树的左视图和右视图

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

    根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断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)
  • 相关阅读:
    格式化你的git message
    git merge
    Git远程操作详解
    Limit
    EmailService
    RequestContextHolder getHttpServletRequest
    spring boot GlobalExceptionHandler @RestControllerAdvice @ExceptionHandler
    redis 的雪崩和穿透?
    FileUtil
    getWeekDay TimeUtil
  • 原文地址:https://www.cnblogs.com/relaxgirl/p/9662650.html
Copyright © 2011-2022 走看看