【剑指Offer】【树】从上到下打印二叉树(层序遍历)

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

 

A:创建一个辅助队列,将根节点入队,添加到输出的vector中

  循环:到队为空为止

  若二叉树有左结点则将左节点入队

  若二叉树有右节点则将右节点入队

  队头元素出队

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    vector<int> PrintFromTopToBottom(TreeNode* root) {
        vector<int> ret;
        ret.clear();
        if (root == nullptr)
        {
            return ret;
        }
        queue<TreeNode*> m_deque;
        m_deque.push(root);//根节点入队
 
        while (!m_deque.empty())
        {
            ret.push_back(m_deque.front()->val);// ret存入队头元素
            if (m_deque.front()->left != nullptr)
            {
                m_deque.push(m_deque.front()->left);//左节点入队
            }
            if (m_deque.front()->right != nullptr)
            {
                m_deque.push(m_deque.front()->right);//右节点入队
            }
            m_deque.pop();//队头元素出队
        }
        return ret;
    }
};

  

 

 

相关题目:

  加减二叉树:

现在有一棵无限大的满二叉树,根节点编号为1。编号为i的节点的左儿子编号为2*i,右儿子2*i+1(比如根节点1的左儿子为2,右儿子为3,2的左儿子为4,右儿子为5。)。牛牛在这棵树上做一个游戏,他从妞妞那里得到了两个数n和k,妞妞希望他拿着数字0从根节点开始往下走,每次选择一条边移动,到达一个节点时选择加上这个节点的编号或者减去这个节点的编号。在走到第k个节点时所得到的数字刚好等于n。
 

这样的路径当然有很多。为了增加难度,妞妞决定让牛牛告诉她经过的节点的编号和最小的路径。
妞妞很聪明,给出的问题都是一定存在答案的。
你能帮帮牛牛吗?https://www.nowcoder.com/practice/39953c879b79412b85fbca2ffdeb0a4c

posted @   XieXinBei0318  阅读(365)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示