zoukankan      html  css  js  c++  java
  • (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree

    Given a n-ary tree, find its maximum depth.

    The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

    For example, given a 3-ary tree:

    We should return its max depth, which is 3.

    Note:

    1. The depth of the tree is at most 1000.
    2. The total number of nodes is at most 5000.

    --------------------------------------------------------------------------------------------------------------------------------------

    这个和求二叉树的最大深度类似,只要掌握了二叉树的最大深度的解法以及理解了N叉树的原理,解决这个题就会很简单了。

    递归/DFS:

    C++代码:

    /*
    // Definition for a Node.
    class Node {
    public:
        int val;
        vector<Node*> children;
    
        Node() {}
    
        Node(int _val, vector<Node*> _children) {
            val = _val;
            children = _children;
        }
    };
    */
    class Solution {
    public:
        int maxDepth(Node* root) {
            if(!root) return 0;
            int maxSum = 1;   //这个是必须的,不能写错。因为根节点的深度为1。
            for(Node *cur:root->children){
                maxSum = max(maxSum, 1 + maxDepth(cur));
            }
            return maxSum;
        }
    };

    BFS(迭代):

    C++代码:

    /*
    // Definition for a Node.
    class Node {
    public:
        int val;
        vector<Node*> children;
    
        Node() {}
    
        Node(int _val, vector<Node*> _children) {
            val = _val;
            children = _children;
        }
    };
    */
    class Solution {
    public:
        int maxDepth(Node* root) {
            if(!root) return 0;
            queue<Node*> q;
            q.push(root);
            int sum = 0;
            while(!q.empty()){
                sum++;
                for(int i = q.size(); i > 0 ; i--){
                    auto t = q.front();
                    q.pop();
                    for(Node *cur : t->children){
                        q.push(cur);
                    }
                }
            }
            return sum;
        }
    };
  • 相关阅读:
    如何产生 XPO 的WCF服务中间层
    法国达索公司 -- 全球出色的产品设计和体验解决方案商
    DevExpress Ribbon布局多文档界面—XtraTabControl动态增加Tab和关闭选项卡方法 (转)
    Axure 案例及基础部件
    低代码平台
    体检结果(2018年10月,胃肠镜)
    功能性肠道疾病用药一览表
    spartan 6 asynchronous reset and set
    理想
    matlab GUI 初学
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10776005.html
Copyright © 2011-2022 走看看