반응형
https://leetcode.com/problems/cousins-in-binary-tree/description/
자료구조 순회 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
구조체 Info를 선언합니다. node의 깊이 depth와 부모정보 parent를 member 변수로 선언했습니다.x와 y의 정보를 저장할 xInfo, yInfo를 선언해줍니다.
📔 풀이과정
dfs를 수행해 x와 y값을 가진 node의 parent와 depth를 xInfo, yInfo에 각각 저장해줍니다.
📔 정답 출력 | 반환
cousin여부를 반환합니다.
📕 Code
📔 C++
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
struct Info {
int depth; TreeNode *parent;
};
class Solution {
public:
void dfs(TreeNode*root, TreeNode*parent, int x, int y, int depth, Info &xInfo, Info &yInfo) {
if(root == NULL) return;
if(x == root->val) {
xInfo = {depth,parent};
}
if(y == root->val) {
yInfo = {depth, parent};
}
dfs(root->left, root, x, y, depth + 1, xInfo, yInfo);
dfs(root->right, root, x, y, depth + 1, xInfo, yInfo);
}
bool isCousins(TreeNode* root, int x, int y) {
Info xInfo = {-1, NULL};
Info yInfo = {-1, NULL};
dfs(root, root, x, y, 0, xInfo, yInfo);
return xInfo.depth == yInfo.depth && xInfo.parent != yInfo.parent;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > DFS' 카테고리의 다른 글
(C++) - LeetCode (easy) 1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree (0) | 2024.02.28 |
---|---|
(C++) - LeetCode (easy) 965. Univalued Binary Tree (0) | 2023.09.14 |
(C++) - LeetCode (easy) 938. Range Sum of BST (0) | 2023.09.07 |
(C++) - LeetCode (easy) 700. Search in a Binary Search Tree (0) | 2023.06.15 |
(C++) - LeetCode (easy) 404. Sum of Left Leaves (0) | 2023.03.05 |