先看题目

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.

Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).

 

Example 1:



Input: root = [1,null,3,2,4,null,5,6]
Output: 3
Example 2:



Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: 5
 

Constraints:

The depth of the n-ary tree is less than or equal to 1000.
The total number of nodes is between [0, 10^4].

题目不难,直接能想到解法,使用深度优先遍历一下。

class Solution {
public:
    static int dfs(Node *root, int cur_level) {
        if (root->children.empty()) {
            return cur_level;
        }

        int level = 0;
        for (auto v : root->children) {
            int child_level = dfs(v, cur_level + 1);
            if (child_level > level) {
                level = child_level;
            }
        }
        return level;
    }

    static int Main(Node* root) {
        if (nullptr == root) {
            return 0;
        }
        return dfs(root, 1);
    }
};

可是貌似性能不咋地,想不到速度更加快的方法了。

共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day