从上到下打印二叉树(层序遍历法)

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

 

例如:

给定二叉树: [3,9,20,null,null,15,7],

    3

   / \

  9 20

    / \

   15 7

 

返回:

[3,9,20,15,7]

 

提示:

节点总数 <= 1000

 

解题思路:

使用层序遍历二叉树并把值存入数组中再输出。(层序遍历需要用到队列)

 

算法流程:

1.创建vector容器result存储要打印的值

2.如果二叉树为空,直接返回result(此时为空)

3.创建队列q,并且把树的根结点入队

4.循环直到队列为空

               创建结点node存储队头元素

               删除队头元素

               如果node的左孩子存在

                       则入队

               如果node的右孩子存在

                       则入队

               把node存入result

5.返回result

 

代码:

class Solution {

public:

    vector<int> levelOrder(TreeNode* root) {

    vector<int> result;

    if(root==nullptr) return result;

    queue<TreeNode*> q;

    q.push(root);

    while(!q.empty()) {

        TreeNode* node=q.front();

        q.pop();

        if(node->left!=nullptr)

            q.push(node->left);

        if(node->right!=nullptr)

            q.push(node->right);

        result.push_back(node->val);

    }

    return result;

    }

};

 

运行步骤:

    3

   / \

  9 20

      / \

    15  7

 

3入队

node=3,3出队,9,20入队

result:[3]

node=9,9出队

result:[3 9]

node=20,20出队,15,7入队

result:[3 9 20]

node=15,15出队

result:[3 9 20 15]

node=7,7出队

result:[3 9 20 15 7]

返回result:[3 9 20 15 7]

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值