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;
        }
    };
  • 相关阅读:
    Linux磁盘空间释放问题
    Linux终端复用神器-Tmux使用梳理
    Linux下路由配置梳理
    Gitlab利用Webhook实现Push代码后的jenkins自动构建
    Tomcat 内存溢出 "OutOfMemoryError" 问题总结 (JVM参数说明)
    Centos下SVN环境部署记录
    Docker格式化输出命令:"docker inspect --format" 学习笔记
    ngx_pagespeed-nginx前端优化模块介绍
    git pull 总要求输入账号和密码解决?
    Android Studio之BuildConfig类
  • 原文地址:https://www.cnblogs.com/clown9804/p/12380475.html
Copyright © 2011-2022 走看看