二叉树的相关概念及其实现判断

本文介绍了如何判断四种类型的二叉树:搜索二叉树、完全二叉树、满二叉树和平衡二叉树。对于搜索二叉树,通过中序遍历判断其数据是否降序排列。接着探讨了递归和非递归中序遍历方法。其余部分分别阐述了完全二叉树、满二叉树和平衡二叉树的判断标准。
摘要由CSDN通过智能技术生成

目录

一、如何判断一棵二叉树是搜索二叉树

 1、搜索二叉树的定义

2、递归中序遍历判断

3、非递归中序遍历判断

二、如何判断一棵二叉树是完全二叉树

三、如何判断一棵二叉树是满二叉树

四、如何判断一棵二叉树是平衡二叉树


一、如何判断一棵二叉树是搜索二叉树

 1、搜索二叉树的定义

搜索二叉树是一种特殊的二叉树,从根节点开始,左子树根节点的值一定当前节点值小,右子树根节点的值一定比当前节点大,如下图所示

利用中序遍历判断数据是否为降序排列即可判断是否是搜索二叉树 

2、递归中序遍历判断

//递归中序遍历判断是否是搜索二叉树
bool isBST(BinaryNode* headnode) {
	if (headnode == nullptr) {
		return true;
	}
	//先判断左树是否是二叉搜索树
	bool isLeftBst = isBST(headnode->m_leftNode);
	if (!isLeftBst) {
		return false;
	}
	//对当前节点进行判断和处理
	if (headnode->m_value <= preValue) {
		return false;
	}else {
		preValue = headnode->m_value;
	}
	//前面如果都是二叉搜索树,那么只用考虑右树是否是二叉搜索树,所以return右树的结果就是整个的结果
	return isBST(headnode->m_rightNode);
}

3、非递归中序遍历判断

bool isBSTUnRecur(BinaryNode* headnode) {
	if (headnode != nullptr) {
		int preValue = INT_MIN;

		stack<BinaryNode*> stack;
		stack.push(headnode);
		while (stack.size() || headnode != nullptr) {
			if (headnode->m_leftNode) {
				stack.push(headnode->m_leftNode);
				headnode = headnode->m_leftNode;
			}else {
				BinaryNode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值