首页 > 其他分享 >二叉搜索树的结构

二叉搜索树的结构

时间:2024-10-20 21:45:00浏览次数:6  
标签:Left return int Tree 二叉 搜索 findFather else 结构

#include<iostream>
#include<string>
using namespace std;
typedef struct TreeNode* Tree;
struct TreeNode {
	int v;
	Tree Left, Right;
	int level;
};

Tree NewNode(int V)
{
	Tree T = (Tree)malloc(sizeof(struct TreeNode));
	T->v = V;
	T->Left = T->Right = NULL;
	return T;
}

Tree insert(Tree T, int V)
{
	if (!T)T = NewNode(V);
	else
	{
		if (V > T->v)				
			T->Right = insert(T->Right, V);		
		else 
			T->Left = insert(T->Left, V);
	}
	return T;
}

Tree MakeTree(int n)
{
	Tree T;
	int i, V;
	cin >> V;
	T = NewNode(V);
	for (int i = 1; i < n; i++)
	{
		cin >> V;
		T = insert(T, V);
	}
	return T;
}

Tree findFather(Tree T, int V, Tree parent = nullptr) {
	if (!T) return nullptr;  // 如果树为空,返回 nullptr
	if (T->v == V) return parent;  // 找到节点 V,返回其父节点

	// 根据值继续在树中查找
	if (V < T->v)
		return findFather(T->Left, V, T);
	else
		return findFather(T->Right, V, T);
}

void judge(Tree T,int m)
{
	for (int i = 1; i <= m; i++)
	{
		string s;
		getchar();
		getline(cin,s);
		if (s.find("root")!=-1) {
			
			cout << "PS:" << T->v << endl;
			int c = s[0]-'0';
			cout << "PS:" << c << endl;
			if (c == T->v) puts("Yes\n");
			else puts("No\n");
		}
		else if(s.find("siblings")) {
			int a = s[0]-'0';
			int b = s[6]-'0';
			if (findFather(T, a) == findFather(T, b)) puts("Yes\n");
			else puts("No\n");
		}
		else if (s.find("level")) {
			int a = s[0] - '0';
			int b = s[6] - '0';
		}

	}
}

int main() {
	int n;
	Tree T;
	cin >> n;
	T=MakeTree(n);
	int m;
	cin >> m;
	judge(T,m);
}

标签:Left,return,int,Tree,二叉,搜索,findFather,else,结构
From: https://www.cnblogs.com/szz123/p/18487987

相关文章

  • 大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(已更完)Elasticsearch(正在更......
  • 关于jpeg图像文件的二进制结构
    https://blog.csdn.net/sinat_26472165/article/details/85342766JEPG的SOF0图像基本信息-帧结构FFC0-SOF0-图像基本信息同样的,0011指示了SOF0块长度为17个字节。前8个字节分别为:字节数 示例中的值 示例中的含义2 0011 SOF0块长度为17个字节1 08 每个像素的每个颜色分量为......
  • 【趣学C语言和数据结构100例】
    【趣学C语言和数据结构100例】问题描述51.在一个递增有序的单链表中,存在重复的元素。设计算法删除重复的元素,例如(7.10.10.21.30.42.42.42.51.70)将变为(7.10.21.30.42.51.70)。52.设A和B是两个单链表(带头结点),其中元素递增有序。设计一个算法从A和B中的公共元素产......
  • 选择结构程序设计
    在顺序结构中,各语句都是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必做任何判断。这是最简单的程序结构。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作选择其一。这就是选择结构要解决的问......
  • 408数据结构-折半查找,分块查找 自学知识点整理
    前置知识:查找的基本概念折半查找折半查找又称二分查找,它仅适用于有序的顺序表。因个人习惯,下文均用二分代替折半。二分查找的基本思想:首先将给定值ke......
  • [SAP ABAP] SE11定义数据类型(结构与表类型)
    1.定义结构使用事务码SE11创建数据类型(结构),输入自定义的数据类型名称,点击创建按钮勾选结构并点击确定按钮 填写简短描述,并在"组件"页签上添加相关字段信息,点击激活按钮即可生效该结构ZSPO_HEADER_4372.定义表类型在定义表类型之前,我们先使用事务码SE11定义结构勾......
  • 文件的物理结构
    文件块和磁盘块类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同。内存与磁盘之间的数据交换(即读/写操作、磁盘I/O)都是以“块”为单位进行的。即每次读入一块,或每次写出一块文件分配方式连续分......
  • 使用MySQL之用正则表达式进行搜索
    1.正则表达式介绍正则表达式是用来匹配文本的特殊的串(字符集合)。如果你想从一个文本文件中提取电话号码,可以使用正则表达式。如果你需要查找名字中间有数字的所有文件,可以使用一个正则表达式。如果你想在一个文本块中找到所有重复的单词,可以使用一个正则表达式。如果你想替......
  • 【数据结构】队列
    ......
  • 栈结构的实现
    栈的概念与结构栈:一种特殊的线性表,只允许再固定的一端进行插入和删除元素操作。栈中的数据元素遵循后进先出的原则。栈的结构:栈的数据保存再数组中typedefstructStack{ STDataType*arr; inttop; //栈顶 intcapacity;//容量}Stack;栈的初始化:voidStack......