栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PAT是否是同一颗二叉搜索树 C++实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PAT是否是同一颗二叉搜索树 C++实现

题目链接 7-4 是否同一棵二叉搜索树 (25 分) 运行结果

运行代码
#include
#include

using namespace std;

//结点
struct Node
{
	int Data;
	Node* Left;
	Node* Right;
};
typedef Node* Position;

class BinTree
{
public:
	BinTree();
	~BinTree();
	Position& GetRoot();
	void Insert(Position& Root, const int& X);
	void Destroy(Position& Root);

private:
	Position Root;
};

BinTree::BinTree() : Root{ nullptr } {}

void BinTree::Destroy(Position& Root)
{
	if (!Root)
		return;
	Destroy(Root->Left);
	Destroy(Root->Right);
	delete Root;
	Root = nullptr;
}

Position& BinTree::GetRoot()
{
	return Root;
}

BinTree::~BinTree()
{
	Destroy(Root);
}

void BinTree::Insert(Position& Root, const int& X)
{
	if (!Root) {
		Root = new Node;
		Root->Data = X;
		Root->Left = nullptr;
		Root->Right = nullptr;
		return;
	}
	if (X > Root->Data)
		Insert(Root->Right, X);
	else if (X < Root->Data)
		Insert(Root->Left, X);

}

bool IsSameTree(Position T1Root, Position T2Root)
{
	if (!T1Root && !T2Root)
		return true;
	if (T1Root && T2Root)
		if (T1Root->Data != T2Root->Data)
			return false;
		else 
			return IsSameTree(T1Root->Left, T2Root->Left) && IsSameTree(T1Root->Right, T2Root->Right);
	else
		return false;
}

int main()
{
	int N, L;
	vector IsSame{};
	while (cin >> N) {
		if (N != 0) {
			cin >> L;
			int X;
			BinTree T1;
			for (int i = 0; i < N; ++i) {
				cin >> X;
				T1.Insert(T1.GetRoot(), X);
			}
			for (int i = 0; i < L; ++i) {
				BinTree T2;
				for (int j = 0; j < N; ++j) {
					cin >> X;
					T2.Insert(T2.GetRoot(), X);
				}
				IsSame.push_back(IsSameTree(T1.GetRoot(), T2.GetRoot()));
			}
		}
		else
			break;
	}
	for (int i = 0; i < IsSame.size() - 1; ++i) {
		if (IsSame[i])
			cout << "Yes" << endl;
		else
			cout << "No" << endl;
	}
	if (IsSame.back())
		cout << "Yes";
	else
		cout << "No";
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号