zoukankan      html  css  js  c++  java
  • 剑指 Offer 55

    题目描述

    输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

    例如:
    给定二叉树 [3,9,20,null,null,15,7]

        3
       / 
      9  20
        /  
       15   7
    

    返回它的最大深度 3 。

    提示:

    节点总数 <= 10000
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof

    代码实现

    /**
     * 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) {
            if(!root)   return 0;
            queue<TreeNode*> node_queue;
            TreeNode* p = root;
            node_queue.push(p);
            int layer_num = 0;
            while(!node_queue.empty()) {
                queue<TreeNode*> tmp;
                while(!node_queue.empty()) {
                    TreeNode* cur_node = node_queue.front();
                    if(cur_node->left)
                        tmp.push(cur_node->left);
                    if(cur_node->right)
                        tmp.push(cur_node->right);
                    node_queue.pop();
                }
                node_queue = tmp;
                layer_num++;
            } 
            return layer_num;
        }
    };
    

    思路解析

    • 层序遍历二叉树,使用tmp队列存储当前层的所有节点,layer_num++
  • 相关阅读:
    2018CodeM复赛
    poj3683
    bzoj3991
    bzoj2809
    bzoj1001
    bzoj1412
    计蒜之道2018复赛
    HDU2255
    bzoj1010
    bzoj2006
  • 原文地址:https://www.cnblogs.com/xqmeng/p/13633299.html
Copyright © 2011-2022 走看看