LeetCode #104 Maximum Depth of Binary Tree 두 갈래 나무의 최대 깊이
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its depth = 3.
제목 묘사: 두 갈래 나무를 정해 최대 깊이를 찾아낸다.
두 갈래 나무의 깊이는 뿌리 노드에서 가장 먼 잎 노드까지의 가장 긴 경로의 노드 수이다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예: 두 갈래 나무[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
최대 깊이 3을 반환합니다.
사고방식: DFS를 사용하는 주체적 사고방식(깊이 우선 검색)
DFS(깊이 우선 검색)
깊이 우선 검색 알고리즘(영어: Depth-First-Search, DFS)은 트리나 그림을 훑어보거나 검색하는 데 사용되는 알고리즘으로 트리의 깊이를 따라 트리의 노드를 훑어보고 가능한 한 깊이 있는 검색 트리의 지점이다.노드 v가 있는 모서리가 이미 탐색되었을 때, 검색은 노드 v를 발견한 모서리의 시작 노드로 거슬러 올라갑니다.이 과정은 원본 노드에서 도달할 수 있는 모든 노드를 발견할 때까지 진행되었다.아직 발견되지 않은 노드가 존재한다면 그 중 하나를 원본 노드로 선택하고 상기 과정을 반복합니다. 전체 프로세스는 모든 노드가 접근할 때까지 반복됩니다.무분별한 수색에 속한다.단계:
코드: C++:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if (!root) return 0;
stack s;
s.push(root);
int result = 0;
while (!s.empty()) {
int nums = s.size();
while (nums > 0) {
TreeNode* current = s.top();
s.pop();
if (current -> left) s.push(current -> left);
if (current -> right) s.push(current -> right);
nums--;
}
result++;
}
return result;
}
};
Java:
/**
* 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 root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
}
Python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1 if root else 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.