数据结构与算法第二天(二叉树刷题)

这是本专栏第二篇文章,数据结构与算法刷题篇

今天做的是LeetCode上二叉树的一道题,感觉很有意义,所以记录下来。

剑指 Offer 32 - II. 从上到下打印二叉树 II

思路:二叉树的层序遍历,通过队列实现。

WA代码:

/**
 * 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:
    queue<TreeNode*> q;
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> ans;
        if(root==NULL)
        return ans;

        q.push(root);
        vector<int>temp;
        while(!q.empty())
        {
            if(q.front()->left)
                q.push(q.front()->left);
            if(q.front()->right)
                q.push(q.front()->right);
            temp.push_back(q.front()->val);
            q.pop();
        }
        ans.push_back(temp);
        return ans;
    }
};

AC代码:




/**
 * 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:
    queue<TreeNode*> myQue;
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> ans;
        if(root==NULL)
        return ans;

        myQue.push(root);
        while(!myQue.empty()){
            vector<int> tmp;
            int size = myQue.size();
            for(;size--;myQue.pop()){
                auto node = myQue.front();
                if(node->left)      myQue.push(node->left);
                if(node->right)     myQue.push(node->right);               
                tmp.push_back(node->val);
            }
            ans.push_back(tmp);
        }
        return ans;
    }
};

两个代码输出是不同的,后面有时间来写区别及感想。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页