zoukankan      html  css  js  c++  java
  • 面试题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;
    }
    
  • 相关阅读:
    时间戳(UnixTimestamp)与 《2038年问题》
    端口相关命令
    Ubuntu中的在文件中查找和替换命令
    A Reusable Aspect for Memory Profiling
    acc文件的运行
    A Reusable Aspect for Memory Allocation Checking
    ACC常用语句
    aspectC++常用命令
    c++调用DOS命令,不显示黑屏
    fopen文件目录问题
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13389109.html
Copyright © 2011-2022 走看看