티스토리 뷰
반응형
문제
https://leetcode.com/problems/find-elements-in-a-contaminated-binary-tree/description/
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
풀이 코드
/**
* 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 FindElements {
TreeNode tree;
static boolean answer = false;
public FindElements(TreeNode root) {
root.val = 0;
changeTree(root);
tree = root;
}
public boolean find(int target) {
answer = false;
findTarget(tree, target);
return answer;
}
/**
* Tree를 순회하면서, target과 일치하면 answer를 true로 변경 후 순회를 종료한다.
* @param node
* @param target
*/
private static void findTarget(TreeNode node, int target) {
if (answer) return;
if (node == null) {
return;
} else {
if (node.val == target) {
answer = true;
return;
}
findTarget(node.left, target);
findTarget(node.right, target);
}
}
/**
* Tree를 순회하면서, node들의 값을 변환한다.
* @param node
*/
private static void changeTree(TreeNode node) {
if (node == null) {
return;
} else {
if (node.left != null) node.left.val = 2 * node.val + 1;
if (node.right != null) node.right.val = 2 * node.val + 2;
changeTree(node.left);
changeTree(node.right);
}
}
}
/**
* Your FindElements object will be instantiated and called as such:
* FindElements obj = new FindElements(root);
* boolean param_1 = obj.find(target);
*/
입출력 예시
Input
["FindElements","find","find"]
[[[-1,null,-1]],[1],[2]]
Output
[null,false,true]
Explanation
FindElements findElements = new FindElements([-1,null,-1]);
findElements.find(1); // return False
findElements.find(2); // return True
코드 설명
- node의 값이 -1로 이루어진 Tree를 문제에서 주어진 조건대로 변환한다.
node.left가 null이 아니면, node.left.val에 2 * node.val + 1로 바꾼다.
node.right가 null이 아니면, node.right.val에 2 * node.val + 2로 바꾼다.
- 변환된 Tree의 node들의 값에 target으로 주어지는 숫자가 있으면 true를 return하고 없으면, false를 return 한다.
반응형
'코딩테스트 > LeetCode' 카테고리의 다른 글
Symmetric Tree (0) | 2023.10.10 |
---|---|
Two Sum IV - Input is a BST (0) | 2023.10.10 |
Count Good Nodes in Binary Tree (0) | 2023.10.06 |
Reverse Odd Levels of Binary Tree (0) | 2023.10.04 |
All Paths From Source to Target (0) | 2023.10.03 |
반응형