数据结构实验2(二叉链表实现二叉树的基本运算)

包含的二叉树运算: 删除一个二叉树, 求一颗二叉树的高度, 求一颗二叉树中叶子结点数, 复制一颗二叉树, 交换一颗二叉树的左右子树,

自上到下, 自左到右层次遍历一颗二叉树.

增加相关功能完善即可, 层次遍历利用队列作为辅助的数据结构, 元素类型是指向二叉树中结点的指针类型.

实现代码:

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "queue"
#include "stack"
#include "cmath"
#include "utility"
#include "map"
#include "set"
#include "vector"
#include "list"
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
template <class T>
struct BTNode
{
	/* data */
	BTNode() { lChild = rChild = NULL; }
	BTNode(const T& x) {
		element = x;
		lChild = rChild = NULL;
	}
	BTNode(const T& x, BTNode<T>* l, BTNode<T>* r) {
		element = x;
		lChild = l;
		rChild = r;
	}
	T element;
	BTNode<T>* lChild, *rChild;
};
template <class T>
class Queue
{
public:
	virtual bool IsEmpty() const = 0; // 队列为空返回true
	virtual bool IsFull() const = 0; // 队列满返回true
	virtual bool Front(T &x) const = 0; // 队头元素赋给x,操作成功返回true
	virtual bool EnQueue(T x)  = 0; // 队尾插入元素x,操作成功返回true
	virtual bool DeQueue() = 0; // 删除队头元素,操作成功返回true
	virtual bool Clear() = 0; // 清除队列中所有元素
};
template <class T>
class SeqQueue:public Queue<T>
{
public:
	SeqQueue(int mSize);
	~SeqQueue() { delete []q; }
	bool IsEmpty() const { return front == rear; } // front与rear相等时循环队列为空
	bool IsFull() const { return (rear + 1) % maxSize == front; } // front与(rear + 1) % maxSize相等时循环队列满
	bool Front(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值