二叉树判断

news/2024/11/23 23:58:21/

Binary tree judgment

判断完全二叉树

思路

使用层序遍历的思想

  • 遇到节点左为空且右不为空,则不是

  • 遇到一个叶子节点,其后必全是叶子节点,否则不是

实现

bool isCBT(Node* root)
{if(root != null){queue<Node*> Nodeque;Nodeque.push(root);bool leaf = false;while(!Nodeque.empty()){Node* Front = Nodeque.front();Nodeque.pop();/******遇到子节点后,后续必全是子节点******/if(leaf && (Front->left != null || Front->right != null)){return false;}/******左为空,又不为空,不是完全二叉树******/if(Front->left == null&&Front->right != null){return false;}if(Front->left) Nodeque.push(Front->left);if(Front->right) Nodeque.push(Front->right);/******遇到第一个子节点******/if(!Front->left && !Front->right) leaf = true;}}return true;
}

判断搜索二叉树

数据

使用preValue表示左子树最后处理的数

思路

  • 使用中序遍历的思想

  • 比较preValueroot->value

实现

static int preValue = -1;
bool isSBT(Node* root)
{if(root == null) return true;bool isSBTleft = isSBT(root->left);if(!isSBTleft) return false;if(root->value <= preValue) return false;preValue = root->value;return isSBT(root->right);
}

总结

需要结合这两种二叉树的特性进行判断,考验对其结构的理解


http://www.ppmy.cn/news/68545.html

相关文章

python自动化爬虫实战

python自动化爬虫实战 偶然的一次机会再次用到爬虫&#xff0c;借此机会记录一下爬虫的学习经历&#xff0c;方便后续复用。 需求&#xff1a;爬取网站数据并存入的csv文件中&#xff0c;总体分为两步 爬取网站数据存到到csv文件中 1、配置爬虫环境 1.1、下载自动化测试驱动 …

docker Connection refused

环境介绍、服务版本、测试服务是否正常&#xff0c;可参考&#xff1a; docker could not find driver_龙枫995的博客-CSDN博客docker容器中&#xff0c;php和mysql互动时&#xff0c;解决出现could not find driverhttps://blog.csdn.net/longfeng995/article/details/130704…

接口测试常用工具及测试方法(基础篇)

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给…

2023.5.13>>Eclipse+exe4j打包Java项目及获取exe所在文件的路径

Eclipseexe4j打包Java项目及获取exe所在文件的路径 1、打包exe文件1.1 打jar包1.2 打包exe2、在程序中获取exe所在路径3、遇到问题4、JDK version和class file version(Class编译版本号)对应关系5、参考文章 1、打包exe文件 1.1 打jar包 右单击项目选择“Export…” 1.2…

7.序列化Serializable

什么是序列化? 将数据结构或者对象转换成二进制串的过程 序列化的方案有哪些? Serializable (java) Externaliable (下面两个方法在读写的属性时需要成双成对使用,不能在不写属性的情况下去读这个属性;并且读写的顺序都必须保持一致;并且还要由一个无参的构造函数) writeExt…

力扣算题Day20

98.验证二叉搜索树(了解二叉树的性质,才是编写此道题代码的基础) 做题伤着了&#xff1a;这道题我做的时候&#xff0c;看到别人写的代码很长&#xff0c;懒得看&#xff0c;直接干。自己编写代码&#xff0c;没有了解平衡二叉树的性质&#xff0c;然后出现了下图[0,-1]、[0]的…

玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制

一、前言 gtest提供了多种事件机制&#xff0c;非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种&#xff1a; 1. 全局的&#xff0c;所有案例执行前后。 2. TestSuite级别的&#xff0c;在某一批案例中第一个案例前&#xff0c;最后一个案例执行后。…

cmake学习笔记

单文件入门 基本函数 PROJECT(projectname [CXX] [C] [Java]) SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] “message to display” …) ADD_EXECUTABLE([BINARY] [SOURCE_LIST]) 例子 文件结构如下&#xff1a; // ma…