程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)

1. 题目

实现一个函数,检查一棵二叉树是否为二叉搜索树。

示例 1:
输入:2/ \1   3
输出: true示例 2:
输入:5/ \1   4/ \3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4

2. 解题

  • 该题要求严格,不允许相等
  • 中序遍历即可
class Solution {
public:bool isValidBST(TreeNode* root) {stack<TreeNode*> stk;TreeNode* tp, *prev = NULL;while(root || !stk.empty()){while(root){stk.push(root);root = root->left;}tp = stk.top();stk.pop();if(prev != NULL && prev->val >= tp->val)return false;prev = tp;root = tp->right;}return true;}
};

在这里插入图片描述

  • 递归
  • 返回子树的最小值和最大值,供上一层判断
class Solution {
public:bool isValidBST(TreeNode* root) {if(!root)return true;bool ans = true;check(root,ans);return ans;}vector<int> check(TreeNode* root, bool& ans){if(!root || ans == false)return {};vector<int> l, r;l = check(root->left, ans);r = check(root->right, ans);if(l.empty() && r.empty())return {root->val, root->val};else if(!l.empty() && r.empty()){if(l[1] >= root->val)ans = false;return {l[0], root->val};}else if(l.empty() && !r.empty()){if(r[0] <= root->val)ans = false;return {root->val, r[1]};}else{if(l[1] >= root->val || r[0] <= root->val)ans = false;return {l[0], r[1]};}    }
};

or

class Solution {bool ans = true;long prevVal = LONG_MIN;
public:bool isValidBST(TreeNode* root) {if(!root || ans == false)return true;isValidBST(root->left);if(root->val <= prevVal)ans = false;elseprevVal = root->val;isValidBST(root->right);return ans;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2 MyWarCraftStudio v0.6版

MyWarCraftStudio v0.6版,可以查看Wow的BLP2、M2、WMO、WDL、ADT、DBC格式的文件 如题。平民程序2005.03.11放出。大家可去平民程序下载&#xff1a;http://blog.gameres.com/show.asp?BlogID144&column0// --- 这个Blog作者不再更新了&#xff0c;如果下载不了&#xff0…

我是如何从头开始写一篇顶级论文的

文 | 重剑无锋知乎源 | 极市平台关于一篇顶会论文是如何产生的这件事—且看作者为你娓娓道来&#xff0c;如何从一形成routine的日常科研生活中挖掘到巧妙的产出。最近完成了一篇很满意的论文&#xff0c;不仅整个过程愉快&#xff0c;回味无穷&#xff0c;而且真正做到了“学术…

程序员面试金典 - 面试题 05.06. 整数转换(位运算)

1. 题目 整数转换。编写一个函数&#xff0c;确定需要改变几个位才能将整数A转成整数B。 示例1:输入&#xff1a;A 29 &#xff08;或者0b11101&#xff09;, B 15&#xff08;或者0b01111&#xff09;输出&#xff1a;2示例2:输入&#xff1a;A 1&#xff0c;B 2输出&am…

论文模型构建的步骤_【论文分享】AiR:具有推理能力的注意力模型框架

大家好&#xff0c;今天我们分享一篇来自于ECCV 2020的论文《AiR: Attention with Reasoning Capability》。这篇论文主要研究的是在视觉推理过程中&#xff0c;人和机器的注意力在时域上的渐进变化。论文代码​github.com一. 论文的动机现有的工作在视觉任务中&#xff0c;例如…

第一次Blog

没有经验请多关照转载于:https://www.cnblogs.com/oiramario/archive/2005/10/18/257414.html

这可能是中国最穷的211大学!连研究生奖学金都发不起了....

源 | 募格学术万万没想到曾经因为“穷”而登上了微博热搜榜的西北大学。最近又因为“没钱”惹的祸而闯上了风口浪尖....近日&#xff0c;西北大学因研究生奖学金发放问题引发关注。起因是临近开学&#xff0c;西北大学通知调整奖学金发放政策&#xff0c;不仅取消了考研新生的奖…

LintCode 1862. 给树浇水的时间(图的遍历)

1. 题目 有一棵n个节点的树&#xff0c;节点编号是0至 n−1&#xff0c;其中 0号节点是根节点&#xff0c;i号节点的父亲节点是father[i] 。 现在要对树浇水&#xff0c;把水撒到根节点上&#xff0c;水会顺着每一条边流下去&#xff0c;从 i 号节点的父亲流到 i 号节点需要 …

potainer 日志_日志系统落地:制定日志规范

我们的系统&#xff0c;已经接入阿里云的日志服务很长一段时间了&#xff0c;存了数以TB级别的日志&#xff0c;突然有一天&#xff0c;领导说&#xff0c;我们需要所有订单的ip信息用于审计订单的真实性&#xff0c;突然发现日志系统无法一次性查找到我所有需要的信息&#xf…

软件项目管理的质量保证

软件工程项目管理是一个系统工程&#xff0c;软件工程项目管理的主要目标是保证项目在规定时间内高质量地完成。项目管理包括了项目组开发各阶段的人员结构的配置&#xff0c;质量控制的实施方略&#xff0c;内部文档和产品文档的组织编写等多项工作&#xff0c;其中质量控制方…

8 月份 Github 上最火的10篇 AI 论文!

文 | 天于刀刀不晓得各位同学在看论文的时候最关注的是什么&#xff1f;也许是论文的创新点&#xff0c;或是被引用的数量&#xff0c;还是...是不是自带代码&#xff01;重要的事说三遍&#xff01;复现&#xff0c;复现&#xff0c;还是复现&#xff01;(ーー゛)为了方便各位…

LintCode 1859. 最小振幅(排序)

1. 题目 给定一个由 N 个整数组成的数组 A&#xff0c;一次移动&#xff0c;我们可以选择此数组中的任何元素并将其替换为任何值。 数组的振幅是数组A中的最大值和最小值之间的差。 返回通过执行最多三次替换之后数组A的最小振幅 示例 1 输入: A [-9, 8, -1] 输出: 0 解释&a…

小程序 webview 分享_新的一周,分享15个好玩的小程序

文/阿C 一周进步签约作者自小程序推出以来&#xff0c;由于其相对比APP而言&#xff0c;具有方便、轻巧、即用即走、不占内存的特性&#xff0c;受到广大追求效率(内存不足)星人的喜爱。不过随着小程序的发展&#xff0c;市面上的小程序开始有些滥竽充数、页面难看同时又极为无…

我的Blog不值钱

My blog is worth $0.00. How much is your blog worth? 呵呵&#xff0c;大家可以看看自己得Blogs值多少钱。转载于:https://www.cnblogs.com/Duiker/archive/2005/11/02/267011.html

中科大博士:我眼中的NLP最快学习路径

有人这样分类目前的人工智能&#xff1a;感知智能、运动智能、认知智能。在这三类智能里面&#xff0c;最复杂的也是人类所特有的认知智能&#xff0c;离不开自然语言处理技术的支持。虽然说自然语言的研究历史虽然还不是很长&#xff0c;但近些年在NLP知名核心企业&#xff08…

软件开发 thoughtworks 技术面_【软件开发】10月29日比赛详细预告

第三回软件开发专业比赛内容 软件需求分析与设计&#xff1a;需求识别、需求挖掘、评估、管理方法论以及业务、流程、场景的分析与建模等知识软件设计与开发&#xff1b;软件设计与开发&#xff1a;编程语言基础基础、数据库技术基础知识、程序开发技术、软件开发流程和工具使…

程序员面试金典 - 面试题 04.10. 检查子树(双重递归)

1. 题目 检查子树。你有两棵非常大的二叉树&#xff1a;T1&#xff0c;有几万个节点&#xff1b;T2&#xff0c;有几万个节点。 设计一个算法&#xff0c;判断 T2 是否为 T1 的子树。 如果 T1 有这么一个节点 n&#xff0c;其子树与 T2 一模一样&#xff0c;则 T2 为 T1 的子…

终于……我的游戏………简体版就要发布了!

喜讯&#xff01;喜讯&#xff01;&#xff01;由软星科技&#xff08;上海&#xff09;有限公司研发、北京寰宇之星软件有限公司代理的《阿猫阿狗2》在广大玩家的引颈期盼中&#xff0c;即将在本月上市了&#xff01; 美丽的田园生活温馨而宁静&#xff0c;淳朴的民风民情是每…

改了!教育部核准这所985高校更改简称!网友:华科大终于来了

源 | 募格学术到底叫“华中大”还是“华科大”&#xff1f;这个曾经无数次成为舆论焦点的难题终于有解了&#xff01;8月31日&#xff0c;教育部网站发布《教育部关于同意华中科技大学章程部分条款修改的批复》、《教育部关于同意吉林大学章程部分条款修改的批复》、《教育部关…

deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...

本文描述了Alluxio如何在混合云环境中&#xff0c;加速oneAPI支撑的英特尔Analytics Zoo开源平台深度学习模型训练。本文会讨论有关新架构和工作流的细节&#xff0c;以及Alluxio的性能优势和基准测试结果。1.混合环境中的深度学习从架构演进到混合模式传统上&#xff0c;数据处…

程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)

1. 题目 设计一个算法&#xff0c;找出二叉搜索树中指定节点的“下一个”节点&#xff08;也即中序后继&#xff09;。 如果指定节点没有对应的“下一个”节点&#xff0c;则返回null。 示例 1: 输入: root [2,1,3], p 12/ \ 1 3输出: 2示例 2: 输入: root [5,3,6,2,4,…