1. 程式人生 > 實用技巧 >LeetCode 102 二叉樹的層序遍歷

LeetCode 102 二叉樹的層序遍歷

題目描述連結:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

解題思路:參考官方題解,解題思路如下:對於二叉樹的層序遍歷,首先應該考慮到的資料結構便是佇列,利用佇列現進先出的特性,可以很方便的解決此題。

(1)根節點入隊。

(2)當佇列不為空時,開始如下迭代過程:獲取當下佇列長度,在當下佇列長度控制下開始內層迴圈,訪問該長度下佇列的每一個元素,然後出隊並擴充套件該節點(擴展出下一層元素)。當該長度訪問完後,即訪問完第k層元素。然後開始訪問第k+1層元素,並擴充套件第k+2層元素,一直到佇列為空時結束。具體LeetCode下C++程式碼如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
       queue<TreeNode *>q;//
層次遍歷所用佇列 vector<vector<int>>res;//儲存結果 if(!root) return res; q.push(root); while(!q.empty()){ int len=q.size(); vector<int>temp; for(int i=0;i<len;++i){ TreeNode *m=q.front();//->val; temp.push_back(m->val); q.pop();
if(m->left){ q.push(m->left); } if(m->right){ q.push(m->right); } } res.push_back(temp); } return res; } };