LeetCode993. 二叉树的堂兄弟节点
2024-09-06 18:15:55
题目
1 class Solution {
2 public:
3 TreeNode* r1;TreeNode* r2;
4 bool isCousins(TreeNode* root, int x, int y) {
5 dfs(root,r1,x);
6 dfs(root,r2,y);
7 int h_x = Depth(root,x);
8 int h_y = Depth(root,y);
9 if(h_x == h_y && r1 != r2) return true;
10 return false;
11 }
12 void dfs(TreeNode* root,TreeNode* &r,int v){
13 if(root!= NULL) {
14 dfs(root->left,r,v);
15 if(root->left &&root->left->val == v ) r = root;
16 if(root->right && root->right->val == v) r = root;
17 dfs(root->right,r,v);
18 }
19 }
20 int Depth(TreeNode* root,int v){
21 if(root == NULL) return -1;
22 if(root->val == v) return 0;
23 //TreeNode* node;
24 queue<TreeNode*>q;
25 q.push(root);
26 int depth = 0;
27 while(!q.empty()){
28 int num = q.size(); //一定要有这句,否则会影响下面循环次数
29 for(int i = 0;i < num;i++){
30 TreeNode* node = q.front();q.pop();
31 if(node->val == v) return depth;
32 if(node->left != NULL) q.push(node->left);
33 if(node->right != NULL) q.push(node->right);
34 }
35 depth++;
36 }
37 return depth;
38 }
39 };
注意:
1.依旧是函数的形参为指针情况,如果想要保存对指针的修改需要址传递 如dfs中 TreeNode* &r
2.第28行代码别忘记,一定要提前记录每一层的个数
最新文章
- 【转】Windows 窗口层次关系
- LruCache为GridView异步加载大量网络图片
- 自定义组件-支持PNG图片的多态GraphicButton
- 将text 文件转为List
- flume系列之—flume ng使用demo
- 10.25 noip模拟试题
- NumberBox( 数值输入框) 组件
- 当tomcat有两个链接数据库的应用同时运行可能冲突
- 一个人ACM(我们赶上了ACM)
- MySQL之乱码问题解决详解
- 函数&;闭包
- Flask技术问题汇总
- vue搭配axios踩坑
- redis点
- es6学习笔记2-—symbol、变量与作用域
- usb3.0 monitor is already started
- iOS:在cell中使用倒计时的最佳方法
- Linux用户态程序计时方式详解
- Docker 安装Centos,Tomcat,Jdk等相关的自定义(Dockerfile)镜像
- Chapter 3 Phenomenon——15