牛客网简单题二叉树(训练2)
题目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)相关推荐
- 牛客网刷题——二叉树
作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...
- 牛客网刷题记录 || 结构体和类
这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...
- 牛客网刷题之SQL篇:非技术快速入门39T
导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...
- 牛客网-SQL题库笔记
牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...
- 牛客网刷题记录 || 循环
这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...
- 牛客网错题集(2021-08-31)
牛客错题集2 暑假回来的一次刷题,结果不是很理想. 1.在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( ). 2.给定代码: 3.第三行将输出什么? 4.关于下面的程序,说法正 ...
- C++ 牛客网做题总结
20天的刷完1234道牛客网C++题,正确率嘛,还算可以,一般~ 1:正确率63% 2:查缺补漏,复习了非常非常多的知识点:牛客网做题笔记 3:当时主要的目的是为了笔试做准备的,找工作的第一关嘛,到时 ...
- 2023年大年初一 —— 牛客网刷题经验分享~
2023年大年初一 -- 牛客网刷题经验分享~
- Python 牛客网编程题输入用例问题
Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...
最新文章
- Python培训:Python有哪些函数?你了解几种?
- HTML5延迟加载原理
- git配置报错fatal: Authentication failed for ‘‘问题解决
- 数据库查询某一列大写转化小写字母表示_算法/开发 面试必看! 【数据库】面试题合集...
- DeepMind论文解读:让机器更深入地理解文本
- LeetCode 680. 验证回文字符串 Ⅱ
- python static函数_python函数怎么实现static变量?
- android studio导入android studio工程
- C语言 结构体中的成员域偏移量
- 量化交易软件 python_我用Python做了个量化交易工具!
- JS调用摄像头屏幕截图
- CentOS8.4搭建PXE启动Ubuntu-server20.04(UEFI)
- matlab 一个简单的FIR低通滤波器设计例子
- 光缆型号英文字母代表什么意思?
- ubuntu版本查看命令
- 文件夹中所有图片合成视频
- 在Excel中优化跨页的合并单元格,避免打印后产生空白
- Apple Watch也出事儿了,据说监测健康的数据不太可靠!
- garch dcc用matlab,用matlab工具箱怎么对garch模型做...
- 频率选择性衰落、时间选择性衰落