leetcode 559. N 叉树的最大深度
题目:559. N 叉树的最大深度
给定一个 N 叉树,找到其最大深度。数,你都可以从 + 或 -中选择一个符号添加在前面。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
示例1:

输入: root = [1,null,3,2,4,null,5,6]
输出: 3
示例2:

输入: 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]
输出: 5
提示:
- 树的深度不会超过 1000 。
- 树的节点数目位于 [0, 104] 之间。
方法:BFS(广度优先搜索)
思路:BFS(广度优先搜索),将子节点作为扩展方向,进行BFS搜索。
运行数据:执行用时:3 ms,内存消耗:38.7 MB
复杂度分析:
- 时间复杂度:O(n),n为节点数。
- 空间复杂度:O(n),n为节点数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| public int maxDepth(Node root) { int depth = 0;
if (root == null) { return depth; }
Queue<Node> queue = new LinkedList<>();
queue.offer(root);
int queueLength = 1;
while (queueLength > 0) {
int currQueueLength = queueLength;
while (currQueueLength-- > 0 ) {
Node currNode = queue.poll();
queueLength--;
if (currNode.children == null) { continue; }
for (Node node : currNode.children) {
queue.offer(node);
queueLength++; } }
depth++; } return depth; }
|
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!