1. 程式人生 > >LEETCODE解題記錄——按層輸出二叉樹

LEETCODE解題記錄——按層輸出二叉樹

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

            3
           / \
          9  20
            /  \
           15   7

返回其層次遍歷結果: [ [3], [9,20], [15,7] ]

題目分析:題目要求按層次遍歷二叉樹,並且將每層的結果存入一維陣列中,最後總的結果存入二維陣列中並且返回。

根據題目要求,因為每一層的結果都要輸入一維陣列中,我們可以考慮引入一個cur值來記錄每一層節點的數目。

同時,由於要遍歷完整棵樹,所以可以考慮引入一個佇列,將每一層的節點存入佇列中,遍歷到該節點後,將其孩子存入佇列後,該節點出隊。以此迴圈,即可遍歷完整棵樹。‘

vector<vector<int> > levelOrder(TreeNode* root) {
    vector <vector <int> > res;
    queue <TreeNode *> Queue;
    if (!root)
        return res;
    Queue.push(root); //根節點進隊
    while (!Queue.empty()) {
        int
cur = Queue.size(); //當前層數的節點數量 vector <int> level; for (int i = 0; i < cur; ++i) { TreeNode *temp = Queue.front(); Queue.pop(); if (temp->left) //若當前層節點有孩子,則孩子進隊 Queue.push(temp->left); if (temp->right) Queue.push(temp->right); level.push_back(temp->val); //結果存入level中
} res.push_back(level); } return res; }