zoukankan      html  css  js  c++  java
  • leetcode-----104. 二叉树的最大深度

    算法1(dfs)

    代码

    /**
     * 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:
        int maxDepth(TreeNode* root) {
            return dfs(root);
        }
    
        int dfs(TreeNode* root) {
            if (!root) return 0;
            if (!root->left && !root->right) return 1;
            return max(dfs(root->left), dfs(root->right)) + 1;
        }
    };
    

    算法2(bfs)

    代码

    /**
     * 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:
        int maxDepth(TreeNode* root) {
            queue<TreeNode*> q;
            if (!root) return 0;
            if (!root->left && !root->right) return 1;
            q.push(root);
            int ans = 0;
            while (!q.empty()) {
                ans += 1;
                int sz = q.size();
                for (int i = 0; i < sz; ++i) {
                    auto t = q.front();
                    q.pop();
                    if (t->left) {
                        q.push(t->left);
                    }
                    if (t->right) {
                        q.push(t->right);
                    }
                }
            }
            return ans;
        }
    };
    
  • 相关阅读:
    简单理解同步与异步
    Python3.x 安装Scrapy框架
    Python命名规范
    python 02/100例
    raw_input与input的区别
    二叉排序树
    串和广义表
    数据结构整理 第一章
    时间复杂度
    Music
  • 原文地址:https://www.cnblogs.com/clown9804/p/12551859.html
Copyright © 2011-2022 走看看