面试题32:从上到下打印二叉树

Posted flyingrun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题32:从上到下打印二叉树相关的知识,希望对你有一定的参考价值。

从上到下打印二叉树(其实就是广度优先遍历),引用辅助队列。

不管是广度优先遍历一幅有向图还是一棵树,都要用到队列。首先把起始节点(对树而言是根节点)放入队列。接下来每次从队列的头部取出一个节点,遍历这个节点之后把它能到达的节点(对树而言是子节点)都依次放入队列。重复这个遍历过程,知道队列中的节点全部被遍历完为止。

C++版本

#include <iostream>
#include <vector>
#include <stack>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;

struct TreeNode{
    int val;
    struct TreeNode* left;
    struct TreeNode* right;
    TreeNode(int val):val(val),left(nullptr),right(nullptr){}
};

queue<TreeNode *> queueTreeNode;

vector<int> PrintFromTopToBottom(TreeNode* root){
    vector<int> ans;
    if(root == nullptr){
        return ans;
    }
    queueTreeNode.push(root);

    while(queueTreeNode.size() > 0){
        // 获取队首的节点
        TreeNode* pNode = queueTreeNode.front();
        queueTreeNode.pop();
        ans.push_back(pNode->val);
        if(pNode->left != nullptr)
            queueTreeNode.push(pNode->left);
        if(pNode->right != nullptr)
            queueTreeNode.push(pNode->right);
    }
    return ans;
}

int main()
{

    return 0;
}

以上是关于面试题32:从上到下打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟系列 Golang 实战 Leetcode —— 面试题32 - I. 从上到下打印二叉树

LeetCode | 面试题32 - II. 从上到下打印二叉树 II剑指OfferPython

面试题32:从上到下打印二叉树

剑指offer面试题32 - III. 从上到下打印二叉树 III

面试题32:从上到下打印二叉树

LeetCode面试题32-2. 从上到下打印二叉树II