01字典树模板

news/2024/7/5 6:01:02
typedef struct Node* node;

struct Node
{
	int val;
	int num;
	node Next[2];
	Node()
	{
		val = num = 0;
		memset(Next,NULL,sizeof(Next));
	}
};

void Insert(node root,int x,int flag)//flag的正负对应了加入和删除 
{
	node p = root;
	for(int i=31 ; i>=0 ; i--)
	{
		int t = (x>>i)&1;
		if(p->Next[t] == NULL)p->Next[t] = new struct Node();
		p->num += flag;
		p = p->Next[t]; 
	}
	p->num += flag;
	p->val = x;
}

int Judge(node root,int x)//注意返回的是树中与x异或结果最大的值,不是异或后的结果。
{
	node p = root;
	for(int i=31 ; i>=0 ; i--)
	{
		int t = ((x>>i)&1)^1;
		if(p->Next[t] == NULL || p->Next[t]->num == 0)t = (x>>i)&1;
		if(p->Next[t] && p->Next[t]->num)p = p->Next[t];
		else return -1;
	}
	return p->val;
} 

void Del(node root){
	for(int i=0 ; i<2 ; ++i){
		if(root->Next[i])Del(root->Next[i]);
	}
	delete(root);
}

int main(){
	node root = new struct Node();
} 

转载于:https://www.cnblogs.com/vocaloid01/p/9514066.html


http://www.niftyadmin.cn/n/976010.html

相关文章

jdk目录详解及其使用方法

jdk目录详解 jdk目录详解JDK(Java Development Kit&#xff0c;Java开发包&#xff0c;Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者 编译&#xff0c;调试和运行用Java语言写的applet和应用程序所需的工具组成…

07 Django 模板

在前面的几节中我们都是用简单的 django.http.HttpResponse 来把内容显示到网页上&#xff0c;本节将讲解如何使用渲染模板的方法来显示内容。 1、在views里写一个首页的视图 from django.shortcuts import renderdef home(request):return render(request, home.html) 2、temp…

微信小程序(15)--上传图片公用组件(2)

接下来开始写写上传图片的公用组件&#xff0c;可以自定义上传几张图片。 chooseImage文件夹里面的index.wxml和index.js,涉及图片上传&#xff0c;删除&#xff0c;预览。 <view class"img-v clearfix"><view class"img-chooseImage" wx:for&quo…

SharePoint online Multilingual support - Settings

博客地址&#xff1a;http://blog.csdn.net/FoxDave This post will talk about how to enable sharepoint online site multilingual support. Below are the labels supported by SharePoint online when site language is changed. Site TitleSite DescriptionList TitleLis…

Linux运维文件系统

文章系统和目录结构文件系统的基本介绍文件名的规则以及文件颜色的分类 注&#xff1a;文件名有的可以不区分大小写文件系统的基本结构linux的文件类型centos7和6的目录变化转载于:https://blog.51cto.com/13873505/2149199

「转载」基环树学习笔记

本文转载于cly_none&#xff0c;并在此基础上修改 已征得本人同意并获取markdown源码 原地址 基环树&#xff0c;也是环套树&#xff0c;简单地讲就是树上在加一条边。它形如一个环&#xff0c;环上每个点都有一棵子树的形式。因此&#xff0c;对基环树的处理大部分就是对树处理…

JavaScript 开发的技巧

JavaScript 开发的45个经典技巧 分类 编程技术 JavaScript是一个绝冠全球的编程语言&#xff0c;可用于Web开发、移动应用开发&#xff08;PhoneGap、Appcelerator&#xff09;、服务器端开发&#xff08;Node.js和Wakanda&#xff09;等等。JavaScript还是很多新手踏入编程世界…

Angular系列学习三:父子组件之间的交互(常见的组件通讯场景)

作者&#xff1a;心叶时间&#xff1a;2018-07-24 16:48:56 通过输入型绑定把数据从父组件传到子组件 通过Input()可以实现父组件传递数据给子组件&#xff0c;下面先看看子组件代码&#xff1a; import { Component, Input } from angular/core;Component({selector: child-co…