题目1(判断是不是平衡二叉树)

class Solution {public:int depth(TreeNode *root){if(root==NULL)return 0;int left=depth(root->left);int right=depth(root->right);return (left>right)?left+1:right+1;}bool IsBalanced_Solution(TreeNode* pRoot) {if(pRoot==NULL)return true;int left=depth(pRoot->left);int right=depth(pRoot->right);if(left-right>1||left-right<-1)return false;//同时左右子树必须是平衡的~//这道题把递归用的很好~,巧用递归真的可以解决好多问题return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);}
};

这道题学会的一个是将以后的知识进行应用,自己会求最大深度,但是就是没会双层利用,判断每一个二叉树的左右子树的深度并进行判断是不是平衡二叉树

题目2(二叉搜索树的最近公共祖先)

class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @param p int整型* @param q int整型* @return int整型*/vector<int> getpath(TreeNode *root,int target){vector<int> path;TreeNode *node=root;while(node->val!=target){path.push_back(node->val);if(node->val>target)node=node->left;//懂了这里,如果都写if的话判断完上面的会进行赋值,再进行判断下面的就会出现问题//所以谨慎用多个if进行判断的时候~elsenode=node->right;}path.push_back(node->val);return path;}int lowestCommonAncestor(TreeNode* root, int p, int q) {// write code herevector<int> path_p;vector<int> path_q;path_p=getpath(root,p);path_q=getpath(root, q);int res;for(int i=0;i<path_p.size()&&i<path_q.size();i++){if(path_p[i]==path_q[i])res=path_p[i];elsebreak;}return res;}
};

这道题分别求路径,然后再重新遍历找到最后一个相同的点是我没想到的,因为忽略了二叉搜索树的本质即找到一个值的路径只能有一条~,这点自己没想出来
!!!摆出一个大神的解法,真的佩服~(代码简化任重而道远,先学会思路吧)

public class Solution {public int lowestCommonAncestor (TreeNode root, int p, int q) {// 随便给2个数,利用二叉搜索树的性质:// 如果两个值都小于根节点,说明祖先在左子树一侧if(p<root.val && q<root.val)return lowestCommonAncestor(root.left,p,q);// 如果两个值都大于根节点,说明祖先在右子树一侧if(p>root.val && q>root.val)return lowestCommonAncestor(root.right,p,q);// 剩最后一种情况:如果根节点的值恰好在两个给定值之间,这个根节点就是最近的公共祖先return root.val;}
}

牛客网简单题二叉树(训练2)相关推荐

  1. 牛客网刷题——二叉树

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  2. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  3. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  4. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

  5. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  6. 牛客网错题集(2021-08-31)

    牛客错题集2 暑假回来的一次刷题,结果不是很理想. 1.在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( ). 2.给定代码: 3.第三行将输出什么? 4.关于下面的程序,说法正 ...

  7. C++ 牛客网做题总结

    20天的刷完1234道牛客网C++题,正确率嘛,还算可以,一般~ 1:正确率63% 2:查缺补漏,复习了非常非常多的知识点:牛客网做题笔记 3:当时主要的目的是为了笔试做准备的,找工作的第一关嘛,到时 ...

  8. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  9. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

最新文章

  1. Python培训:Python有哪些函数?你了解几种?
  2. HTML5延迟加载原理
  3. git配置报错fatal: Authentication failed for ‘‘问题解决
  4. 数据库查询某一列大写转化小写字母表示_算法/开发 面试必看! 【数据库】面试题合集...
  5. DeepMind论文解读:让机器更深入地理解文本
  6. LeetCode 680. 验证回文字符串 Ⅱ
  7. python static函数_python函数怎么实现static变量?
  8. android studio导入android studio工程
  9. C语言 结构体中的成员域偏移量
  10. 量化交易软件 python_我用Python做了个量化交易工具!
  11. JS调用摄像头屏幕截图
  12. CentOS8.4搭建PXE启动Ubuntu-server20.04(UEFI)
  13. matlab 一个简单的FIR低通滤波器设计例子
  14. 光缆型号英文字母代表什么意思?
  15. ubuntu版本查看命令
  16. 文件夹中所有图片合成视频
  17. 在Excel中优化跨页的合并单元格,避免打印后产生空白
  18. Apple Watch也出事儿了,据说监测健康的数据不太可靠!
  19. garch dcc用matlab,用matlab工具箱怎么对garch模型做...
  20. 频率选择性衰落、时间选择性衰落

热门文章

  1. 【达摩院OpenVI】几行代码,尽享丝滑视频观感
  2. Ajax中的beforeSend
  3. 我的“普鲁斯特问卷”
  4. 教师资格考试系统报“访问超时,请点击页面右上角“退出”按钮后重新登录。”解决方法
  5. Thymeleaf---基础知识
  6. DX11龙书学习笔记---准备工作
  7. 计算机硬件技术基础(太原理工大学):第四章
  8. CUDA-F-1-1-异构计算-CUDA
  9. 爱心c语言颜色程序代码,谁能给个爱心图案的C语言源码,帮帮我
  10. 蛋仔派对兑换礼包码分析