给定一个 N 叉树,找到其最大深度。

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

N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

示例 1:

N叉树的最大深度-559 - 图1

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

示例 2:

N叉树的最大深度-559 - 图2

  1. 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]
  2. Output: 5

提示:

  • 树的深度不会超过 1000
  • 树的节点数目位于 [0, 104] 之间;

思路

广度优先遍历基础题。类比102题:二叉树的层序遍历去修改即可。

代码

  1. /*
  2. // Definition for a Node.
  3. class Node {
  4. public:
  5. int val;
  6. vector<Node*> children;
  7. Node() {}
  8. Node(int _val) {
  9. val = _val;
  10. }
  11. Node(int _val, vector<Node*> _children) {
  12. val = _val;
  13. children = _children;
  14. }
  15. };
  16. */
  17. class Solution {
  18. public:
  19. int maxDepth(Node* root) {
  20. if( nullptr == root ) return 0;
  21. int ans = 0;
  22. queue<Node*> Q;
  23. Q.push( root );
  24. while( !Q.empty() ) {
  25. int walk_length = Q.size();
  26. ans++;
  27. for(int i = 0; i < walk_length; i++) {
  28. Node* cur_node = Q.front();
  29. Q.pop();
  30. for(int j = 0; j < cur_node->children.size(); j++) {
  31. Q.push( cur_node->children[j] );
  32. }
  33. }
  34. }
  35. return ans;
  36. }
  37. };