leetcode429-N 叉树的层序遍历
429. N 叉树的层序遍历
BFS非递归,自己写的。
/* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; children = _children; } }; */ class Solution { public: vector<vector<int>> levelOrder(Node* root) { if(root==nullptr) return {}; queue<Node*> qqq; vector<vector<int>> res; qqq.push(root); while(!qqq.empty()) { int size=qqq.size(); vector<int> temp; for(int i=0;i<size;i++) { Node *t=qqq.front(); qqq.pop(); temp.push_back(t->val); for(Node* child:t->children) { if(child!=nullptr) qqq.push(child); } } res.push_back(temp); } return res; } };
DFS递归,看了一眼别人的代码写的
/* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; children = _children; } }; */ class Solution { public: vector<vector<int>> res; void dfs(Node* root,int index) { if(root==nullptr) return; if(index>=res.size()) res.push_back(vector<int>()); res[index].push_back(root->val); for(Node* child:root->children) { dfs(child,index+1); } } vector<vector<int>> levelOrder(Node* root) { dfs(root,0); return res; } };