刷代码随想录有感(38):N叉树的层序遍历

题干:

代码:

// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;
    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};


class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        queue<Node*>que;
        vector<vector<int>>res;
        if(root != NULL)que.push(root);
        while(!que.empty()){
            int size = que.size();
            vector<int>tmp;
            while(size--){
                Node* node = que.front();
                que.pop();
                tmp.push_back(node -> val);
                for(int i = 0; i < node -> children.size(); i++){//node->children.size()指当前节点的孩子数目
                    if(node -> children[i]) que.push(node -> children[i]);
                }
            }
            res.push_back(tmp);
        }
        return res;
    }
};

与层序遍历模板不同在于,将if(node->left(right))que.push(node->left(right))改为了:

for(int i = 0; i < node -> children.size(); i++){
    if(node -> children[i]) que.push(node -> children[i]);
} 

node->children.size()指的是当前节点的所有孩子节点个数

if(node -> children[i])指的是如果能扫到节点(即节点存在)就执行后面的步骤。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 08:26:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 08:26:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 08:26:03       82 阅读
  4. Python语言-面向对象

    2024-04-22 08:26:03       91 阅读

热门阅读

  1. 安卓手机APP开发__媒体开发部分__网络栈

    2024-04-22 08:26:03       38 阅读
  2. C 练习实例25

    2024-04-22 08:26:03       36 阅读
  3. continue语句

    2024-04-22 08:26:03       34 阅读
  4. SQL语法基础-其他函数V

    2024-04-22 08:26:03       30 阅读
  5. Rust 中 Actor 并发模型的实践与使用

    2024-04-22 08:26:03       33 阅读
  6. K8s: 集群内Pod通信机制之DNS

    2024-04-22 08:26:03       32 阅读
  7. 课时102:正则表达式_基础实践_锚定匹配

    2024-04-22 08:26:03       36 阅读