zoukankan      html  css  js  c++  java
  • 剑指OFFER----面试题32

    面试题32 - I. 从上到下打印二叉树

    代码:

    /**
     * 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<int> levelOrder(TreeNode* root) {
            vector<int> res;
            if (!root) return res;
            queue<TreeNode*> q;
            q.push(root);
            while (!q.empty()) {
                TreeNode* cur = q.front();
                res.push_back(cur->val);
                q.pop();
                if (cur->left != nullptr) q.push(cur->left);
                if (cur->right != nullptr) q.push(cur->right);
            }
            return res;
        }
    };

    面试题32 - II. 从上到下打印二叉树 II

    代码:

    /**
     * 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) return res;
            queue<TreeNode*> q;
            q.push(root);
            vector<int> tmp;
            while (!q.empty()) {
                int s = q.size();
                tmp.clear();
                for (int i = 0; i < s; i++) {
                    TreeNode* cur = q.front();
                    tmp.push_back(cur->val);
                    q.pop();
                    if (cur->left != nullptr) q.push(cur->left);
                    if (cur->right != nullptr) q.push(cur->right);
                }
                if (!tmp.empty()) res.push_back(tmp);
            }
            return res;
        }
    };

    面试题32 - III. 从上到下打印二叉树 III

    代码:

    /**
     * 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) return res;
    
            queue<TreeNode*> q;
            q.push(root);
            q.push(nullptr);
    
            vector<int> level;
            bool zigzag = false;
            while (q.size()) {
                auto t = q.front();
                q.pop();
                if (!t) {
                    if (level.empty()) break;
                    if (zigzag) reverse(level.begin(), level.end());
                    res.push_back(level);
                    level.clear();
                    q.push(nullptr);
                    zigzag = !zigzag;
                    continue;
                }
                level.push_back(t->val);
                if (t->left) q.push(t->left);
                if (t->right) q.push(t->right);
            }
            return res;
        }
    };
  • 相关阅读:
    codeforces 650B
    2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity
    2013 ACM区域赛长沙 I LIKE vs CANDLE(ZOJ3734) 很好的一道树形DP
    Codeforces Round #306 (Div. 2)——A——Two Substrings
    Codeforces Round #306 (Div. 2)——B暴力——Preparing Olympiad
    HDU5248——二分查找——序列变换
    HDU2255——KM算法——奔小康赚大钱
    匈牙利算法&KM算法
    HDU1059——多重部分和问题——Dividing
    HDU1058——Humble Numbers
  • 原文地址:https://www.cnblogs.com/clown9804/p/12380475.html
Copyright © 2011-2022 走看看