二叉树的层次遍历

xiaoxiao2025-08-10  25

二叉树的层次遍历

对于一颗二叉树,如何对此进行层次遍历,并且按行输出。 这个问题,有以下两个解法:

class Solution { public: vector<vector<int>> levelOrder(Node* root) { BFS(root, 0); return res; } public: void BFS(Node* node, int level) { if(node == nullptr) return; if(level == res.size()) res.push_back(vector<int> ()); res[level].push_back(node->val); for(auto n:node->children) BFS(n, level+1); } private: vector<vector<int>> res; };

解法2(使用队列)

class Solution { public: vector<vector<int>> levelOrder(Node* root) { vector<vector<int>> output; if (!root) return output; queue<Node*> treeTemp; treeTemp.push(root); auto treeNum = treeTemp.size(); while (treeNum) { vector<int> valTemp; for (auto i=0; i<treeNum; ++i) { root = treeTemp.front(); valTemp.push_back(root->val); treeTemp.pop(); for (auto childTemp:root->children) treeTemp.push(childTemp); } output.push_back(valTemp); treeNum = treeTemp.size(); } return output; } };
转载请注明原文地址: https://www.6miu.com/read-5034593.html

最新回复(0)