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叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

例如,给定一个 3叉树 :

 

我们应返回其最大深度,3。

说明:

  1. 树的深度不会超过 1000
  2. 树的节点总不会超过 5000

题解:此题是二叉树的变形,求多叉树的树高。这道题非常巧妙,可以利用队列这个特殊的数据结构来实现层次遍历,在对每一层进行扫描完后,树高加1的操作来实现。

public int maxDepth(Node root)   //层次遍历
    {
        if(root == null)
            return 0;
        int res = 0;
        Queue queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty())
        {
            int levelNum = queue.size();
            res++;
            for(int i = 0; i < levelNum; i++)
            {
                Node temp = queue.poll();
                if(temp.children != null)
                {
                    for(Node ele : temp.children)
                        queue.add(ele);
                }
            }
        }
        return res;
    }

层次遍历在解决求树高,按“之字形”扫描树,都可以考虑用层次遍历来解。对二叉树的稍微变形,也是一种非常重要的灵活应变。

你可能感兴趣的:(LeetCode刷题)