LeetCode 노트-104 두 갈래 나무의 최대 깊이
1672 단어 LeetCode 노트
두 갈래 나무를 정해 최대 깊이를 찾아라.
두 갈래 나무의 깊이는 뿌리 노드에서 가장 먼 잎 노드까지의 가장 긴 경로의 노드 수이다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예: 두 갈래 트리를 지정합니다
[3,9,20,null,null,15,7]
, 3
/ \
9 20
/ \
15 7
최대 깊이 3을 반환합니다.
사고방식: 노드 루트에 대해root=null시 나무의 최대 깊이 d(root)=0;
루트가 비어 있지 않으면 d(root)=1+max[maxDepth(root.left),maxDepth(root.right)]
루트가 비어 있지 않을 때, 나무의 깊이에 1을 추가한 다음, 좌우 트리가 밀어내는 최대치를 추가합니다.전에 생각했던 건 둘의 합을...그 다음에 추이를 쓰는 절차는 추이의 공식과 추이가 끝나는 조건을 먼저 명확하게 생각해야 한다.
내가 다시 할 때도 가장 멍청한 귀착의 사고방식을 생각했을 뿐, 아래의 코드와 차이가 많지 않았다...
코드:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int maxDepth(TreeNode root) { if(root==null) return 0; else if(root.left==null&&root.right==null) {return 1;} else { int left=maxDepth(root.left); int right=maxDepth(root.right); return 1+(left>right?left:right); } } }
가장 빠른 실행 사례:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
// return 0 for null node
if (root == null)
return 0;
int left_depth = maxDepth(root.left);
int right_depth = maxDepth(root.right);
// return depth of the subtree rooted at root
return Math.max(left_depth, right_depth) + 1;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 노트-107 두 갈래 트리 레이아웃 II두 갈래 나무를 정해서 노드 값이 밑에서 위로 올라가는 차원을 되돌려줍니다.(즉, 잎 노드가 있는 층에서 뿌리 노드가 있는 층으로 한 층씩 왼쪽에서 오른쪽으로 옮겨간다) 사고방식 1: 전체적인 사고방식은 나무의 모든...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.