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;
    }
    
  • 相关阅读:
    重装系统后无线网卡问题
    U盘重装系统win7
    移动端高清、多屏适配方案
    javascript闭包
    javascript的this指向
    合作开发,导入MyEclipse项目报错问题
    [LC] 117. Populating Next Right Pointers in Each Node II
    [LC] 443. String Compression
    [LC] 1099. Two Sum Less Than K
    [LC] 149. Max Points on a Line
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13389109.html
Copyright © 2011-2022 走看看