[剑指offer]从上到下打印二叉树II——把二叉树打印成多行

    技术2022-07-11  91

    [剑指offer]从上到下打印二叉树II-——把二叉树打印成多行

    剑指offer-从上到下打印二叉树II

    题目描述

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

    例如:

    给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ]

    提示: 节点总数 <= 1000

    解题思路
    在剑指offer-从上到下打印二叉树的基础上,多加了一个判断。根节点出队后,根节点的左右子树节点入队,之后队列每出去一层节点,它们的下一层子节点会进队,所以,每次出队之前的队列大小代表这一层有几个节点。
    实现代码
    class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>>res; queue<TreeNode*> que; que.push(root); while(!que.empty()){ <vector<int>list; int num = que.size();//队列大小代表这一层有几个节点 while(num--){ TreeNode* temp = que.front();//获得队列头节点 que.pop(); if(temp){//节点不为null时 list.push_back(temp->val);//节点值保存 que.push(temp->left);//左子树入队 que.push(temp->right);//右子树入队 } } if(!list.empty())//list有可能是[] res.push_back(list); } return res; } };
    Processed: 0.011, SQL: 9