1. 程式人生 > >LeetCode 102. 二叉樹的層次遍歷(C++)

LeetCode 102. 二叉樹的層次遍歷(C++)

題目

給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:

給定二叉樹: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回其層次遍歷結果:
[
  [3],
  [9,20],
  [15,7]
]

廢話不多說,直接上程式碼

/**
 * 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) { vector< vector<int> > res; if(root == NULL) return res; queue < pair<TreeNode*, int> > q; //儲存節點和節點所在的層 q.push(make_pair(root, 0)); while
(!q.empty()){ TreeNode* node = q.front().first; int level = q.front().second; q.pop(); if(level == res.size()) res.push_back(vector<int>() ); res[level].push_back(node->val); if(node->left != NULL) q.push(make_pair(node->left, level + 1
)); if(node->right != NULL) q.push(make_pair(node->right, level + 1)); } return res; } };