本文主要是介绍LeetCode每日一题——993. Cousins in Binary Tree,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、题目
- 二、题解
一、题目
Given the root of a binary tree with unique values and the values of two different nodes of the tree x and y, return true if the nodes corresponding to the values x and y in the tree are cousins, or false otherwise.
Two nodes of a binary tree are cousins if they have the same depth with different parents.
Note that in a binary tree, the root node is at the depth 0, and children of each depth k node are at the depth k + 1.
Example 1:
Input: root = [1,2,3,4], x = 4, y = 3
Output: false
Example 2:
Input: root = [1,2,3,null,4,null,5], x = 5, y = 4
Output: true
Example 3:
Input: root = [1,2,3,null,4], x = 2, y = 3
Output: false
Constraints:
The number of nodes in the tree is in the range [2, 100].
1 <= Node.val <= 100
Each node has a unique value.
x != y
x and y are exist in the tree.
二、题解
/*** 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) {}* };*/
class Solution {
public:bool isCousins(TreeNode* root, int x, int y) {TreeNode* xf = nullptr;TreeNode* yf = nullptr;queue<TreeNode*> q;q.push(root);while(!q.empty()){int size = q.size();vector<TreeNode*> res;while(size--){TreeNode* t = q.front();q.pop();if(t->left){q.push(t->left);xf = t->left->val == x ? t:xf;yf = t->left->val == y ? t:yf;}if(t->right){q.push(t->right);xf = t->right->val == x ? t:xf;yf = t->right->val == y ? t:yf;}}if(xf && yf && (xf != yf)) return true;if(xf || yf) return false;}return false;}
};
这篇关于LeetCode每日一题——993. Cousins in Binary Tree的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!