<LeetCode>-559. N叉树的最大深度- 递归解题思路

    xiaoxiao2025-04-27  19

    所用语言:Java

    /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val,List<Node> _children) { val = _val; children = _children; } }; */ class Solution { public int maxDepth(Node root) { if(root == null){ return 0; } if(root.children == null || root.children.size() == 0){ return 1; } int maxDep = 1; int tempDep = 0; for(Node node : root.children){ tempDep = maxDepth(node) + 1 ; if(tempDep > maxDep){ maxDep = tempDep; } tempDep = 0; } return maxDep; } }

    因为这道题是104. 二叉树的最大深度 这一题的衍生题,子节点由2个节点变成了一个链表,不过核心思路是一样的,使用递归就可以很容易做出来。

    既然是递归,就得有边界条件,那么此处的边界条件就是传入的节点没有子节点。这个情况下就应该返回一个固定的深度1。表示这里递归就结束了。边界条件有了,那么还需要前进条件,就是再次调用自己这个方法的条件,参考二叉树的最大深度一题,当传入的节点有子节点时,就再次调用。

    条件列出来了,就可以对剩余代码进行补充了,与二叉树那里不同的是,因为子节点时一个链表所以就使用了一个循环去遍历它,在循环内部求出每次递归返回的子节点最大深度,这样最后得到的maxDep也就是我们要求的最大深度。

    最新回复(0)