zoukankan      html  css  js  c++  java
  • 《剑指offer》面试题16:从上往下打印二叉树(Python)

    题目描述

    从上往下打印出二叉树的每个节点,同层节点从左至右打印。
     
     
     

    解题思路:

    这个题目其实非常基础了,也就是直接使用BFS广度优先搜索算法对整棵二叉树进行遍历即可,我们最后返回的是一个数组 "[]",把遍历之后的元素放到这个数组当中即可。为了进行BFS,我们首先新建一个队列,将树根部的节点放到队列里,然后弹出,弹出的同时将刚刚弹出的Node下面的两个节点放到队列的后面,这样在循环当中又可以遍历后面的Node了。也就是谁被弹出来了,谁也就会被放入到这个列表里,同时将弹出这个数值的子树的node放到队列queue里面。这个题比较特殊,我们返回的是一个列表,因此即使给定的root里面啥也没有,我们返回的则是空列表而不是None。代码如下所示:

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        # 返回从上到下每个节点值列表,例:[1,2,3]
        def PrintFromTopToBottom(self, root):
            # write code here
            if root == None:
                return []
            ret = []
            queue = []
            queue.append(root)
            while queue:
                now_node = queue.pop(0)
                ret.append(now_node.val)
                if now_node.left != None:
                    queue.append(now_node.left)
                if now_node.right != None:
                    queue.append(now_node.right)
            return (ret)

     下面我们建立一个简单的二叉树来模拟这个过程:

     这个题目也是一个经典的模板题。

  • 相关阅读:
    javascript定义
    JavaScript学习笔记
    PostgreSQL数据库配置
    python 时间戳转时间 timestamp to time
    WebGIS:Vue+Flask+PostGIS+Geoserver开发环境配置
    GeoServer环境配置
    Vue前端环境配置
    Flask后端环境配置
    1.顺序表
    汇编语法--AT&T VS. intel
  • 原文地址:https://www.cnblogs.com/geeksongs/p/13569457.html
Copyright © 2011-2022 走看看