1.二叉搜索树中第k小的元素

【题目】

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

【分析】

递归实现,根据二叉搜索树的性质,中序遍历二叉搜索树,即先查找左子树,然后将当前节点放入数组num中,然后先查找右子树,不断重复上述过程,直至遍历到叶子节点结束,最终就得到了有序的数组nums,答案即为num[k−1]。

【代码】

C++:时间O(n),空间O(n)

class Solution {
public:vector<int> num;int kthSmallest(TreeNode* root, int k) {dfs(root);return num[k - 1];}void dfs(TreeNode *node) {if (node->left != NULL) dfs(node->left);num.push_back(node->val);if (node->right != NULL) dfs(node->right);}
};

C

#define MAX_NUM 10000void dfs(struct TreeNode *root, int *arr, int *len)
{if (root == NULL) {return;}/* 中序遍历该二叉树 */dfs(root->left, arr, len);  // 先遍历左子树arr[(*len)++] = root->val;  // 再遍历父节点dfs(root->right, arr, len); // 最后遍历右子树
}int kthSmallest(struct TreeNode *root, int k)
{int ret[MAX_NUM] = {0};int len = 0;dfs(root, ret, &len);return ret[k - 1];  // 因为下标从1开始,因此第k的元素的下标是k-1
}

 2.监控二叉树

【题目】

【分析】参考leetcode-master/0968.监控二叉树.md at master · youngyangyang04/leetcode-master · GitHub

【代码】C

/*
**函数后序遍历二叉树。判断一个结点状态时,根据其左右孩子结点的状态进行判断
**状态:0为没有被摄像头覆盖到。1为此结点处应设置摄像头。2为此结点已被摄像头覆盖
*/
int traversal(struct TreeNode* node, int* ans) {//递归结束条件:传入结点为NULL,假设此结点能被摄像头覆盖。这样方便与对叶子结点的判断,将叶子结点设为0if(!node)//遇到空节点return 2;//后序遍历二叉树,记录左右孩子的状态。根据左右孩子状态更新结点自身状态int left = traversal(node->left, ans);int right = traversal(node->right, ans);//若左右孩子都可以被摄像头覆盖,将父亲结点状态设为0if(left == 2 && right == 2) {return 0;}//若左右孩子有一个结点状态为没有被覆盖(0),则将父亲结点状态设置为摄像头if(left == 0 || right == 0) {(*ans)++;return 1;}//若左右孩子有一个为摄像头,证明父亲结点可以被覆盖。将父亲结点状态变为2if(left == 1 || right == 1)return 2;//逻辑不会走到-1,语句不会执行return -1;
}int minCameraCover(struct TreeNode* root){int ans = 0;//在对整个二叉树遍历后。头结点可能未被覆盖,这时候如果函数返回值为0,证明头结点未被覆盖。说明头结点也需要添置摄像头,ans++if(traversal(root, &ans) == 0)ans++;return ans;
}

打卡leetcode第12天相关推荐

  1. LeetCode (12.整数转罗马数字)JAVA StringBuffer

    LeetCode (12.整数转罗马数字)JAVA StringBuffer 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...

  2. 跟我打卡LeetCode 61旋转链表62不同路径63不同路径 II

    原创公众号:bigsai 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 49字母异位词分组&50pow(x,n)&51八皇后 LeetCode打卡 52八皇 ...

  3. 从0打卡leetcode之day 3 -- 最大子序列和

    前言 就有要把leetcode的题刷完,每天一道题,每天进步一点点 从零打卡leetcode之day 3 题目描述: 给定一个int类型的数组,求最大子序列的和. 也就是说,从这个数组中截取一个子数组 ...

  4. Leetcode 2020/12/03打卡 204计算质数(简单)

    204. 计数质数 == 万一我侵犯了您的权利,联系我,我必删 统计所有小于非负整数 n 的质数的数量. 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2 ...

  5. 【12月打卡~Leetcode每日一题】659. 分割数组为连续子序列(难度:中等)

    659. 分割数组为连续子序列 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 . 如果可以完成上述分割,则 ...

  6. 跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列

    原创公众号:bigsai 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字母异位词分组&50pow(x,n ...

  7. 钉钉打卡5.1.12脚本(基于auto.js)开发

    标题 AUTOJS软件自带定时功能定时触发,钉钉5.1.12打卡 1920*1080分辨适用,20200821更新 //双线程执行2次,采用AUTOJS软件自带定时功能定时触发,钉钉5.1.12 19 ...

  8. 北京公交异型卡扩大销售 12种外形主供白领(图)

    由一卡通公司推出的水晶胶异型卡经过一个月的试销后,在本月将扩大销售范围. 记者从一卡通公司了解到,这种外形小巧.形似手机链的水晶胶异型卡的销量已经接近3000张. 北京市市政交通一卡通有限公司市场部的 ...

  9. LeetCode LCP 12. 小张刷题计划(二分查找)

    1. 题目 为了提高自己的代码能力,小张制定了 LeetCode 刷题计划,他选中了 LeetCode 题库中的 n 道题,编号从 0 到 n-1,并计划在 m 天内按照题目编号顺序刷完所有的题目(注 ...

最新文章

  1. linux 文件目录操作,Linux系统下文件与目录操作
  2. POJ 3258 -- River Hopscotch(二分)
  3. 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
  4. Json学习总结(4)——Json基础知识回顾
  5. @PropertySource和@ConfigurationProperties
  6. java排序算法 sort_Java排序算法之SleepSort排序示例
  7. Python全栈开发之函数
  8. 【OpenCV】复制、切割出图像ROI区域
  9. 铃声截取软件android6,铃声剪辑
  10. 最新华为EMUI 11.0.0 Mate40和Mate30成功安装Google play及谷歌套件(附带解决谷歌弹窗)的方法
  11. 集成测试之自顶向下、自底向上、三明治集成
  12. APISpace 全国行政区查询API 方便好用
  13. 网页关注微信服务号登录
  14. css translate 坐标,translate()
  15. STM32MP157系统移植(TF-A,U-Boot,Linux)
  16. 三星发布全球首款太阳能笔记本
  17. 【PostgreSQL-15的 \watch命令】
  18. python 函数修饰器 父类_Python函数嵌套、回调函数、闭包、装饰器和类
  19. 软件架构师 第一部分 基础篇 第四章 识别架构特性
  20. oracle智能便携投影机,智能投影 篇四:天猫精灵投影仪上手体验,小巧便携+内置电池,李佳琦带货推荐...

热门文章

  1. 第五模块:WEB开发基础-第8章 Jquery开发BootStrap
  2. 小白对于学习对象和类的总结,定义一个圆柱体类Cylinder,并创建相应的对象,然后计算圆柱体的底面积和面积.
  3. [算法]LeetCode每日一题--174. 地下城游戏(Java)
  4. JNDI 注入漏洞的前世今生
  5. DAT的算法原理及实现
  6. stata软件不出图_Stata软件的图形绘制—2
  7. 【玩转python】python实现代替QQ邮箱发出邮件(附源码,新手也能用!)
  8. 蓝桥杯 基础练习 数列排序 Java
  9. java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(一:总览篇)~整起
  10. 赛门铁克:政企云建设与安全要双管齐下