Leetcode Java Find Bottom Left Tree Value
업데이트:
문제
코드
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int findBottomLeftValue(TreeNode root) {
return this.dfs(root, 1, new int[] { 0, 0 });
}
private int dfs(TreeNode root, int depth, int[] result) {
if (result[1] < depth) {
result[0] = root.val;
result[1] = depth;
}
if (root.left != null) {
this.dfs(root.left, depth + 1, result);
}
if (root.right != null) {
this.dfs(root.right, depth + 1, result);
}
return result[0];
}
}
결과
설명
-
root의 왼쪽에 존재하는 모든 노드 중 가장 큰 값을 구하는 문제이다.
-
3번에서 정의한 dfs(TreeNode root, int depth, int[] result) 메서드를 1 depth부터 result에 [0, 0]를 넣어 수행한 결과를 반환한다.
-
DFS 방식으로 좌측의 모든 노드를 탐색해서 결과를 넣을 dfs(TreeNode root, int depth, int[] result) 메서드를 정의한다.
- depth가 result[1]인 depth가 보다 큰 경우, root의 val 값과 depth를 쌍으로 result에 넣어준다.
- root의 left가 null이 아니면 재귀 호출을 이용하여 depth를 1 증가하여 수행한다.
- root의 right가 null이 아니면 재귀 호출을 이용하여 depth를 1 증가하여 수행한다.
- result[0]인 최대 val 값을 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기