⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bintree.cpp

📁 常用算法与数据结构原代码
💻 CPP
字号:
#include <iostream.h>

typedef struct node{
	int data;
	node *lchild;
	node *rchild;
} TNODE;

TNODE *static_search(TNODE *t,int key)
{
	while (t!=NULL)
		if (t->data==key)
			return t;
		else
			if (key<t->data)
				t=t->lchild;
			else
				t=t->rchild;
	return NULL;
}

void dynamic_search(TNODE *t,int key,TNODE *&pkpt,TNODE *&kpt)
{
	pkpt=NULL;
	kpt=t;
	while (kpt!=NULL)
	{
		if (kpt->data==key)
			return;
		pkpt=kpt;
		if (key<kpt->data)
			kpt=kpt->lchild;
		else
			kpt=kpt->rchild;
	}
}

int insert(TNODE *&pt,int key)
{
	TNODE *p,*q,*r;
	dynamic_search(pt,key,p,q);
	if (q!=NULL)
		return 1;
	r=new TNODE;
	r->data=key;
	r->lchild=r->rchild=NULL;
	if (p==NULL)
		pt=r;
	else
		if (p->data>key)
			p->lchild=r;
		else
			p->rchild=r;
	return 0;
}

int del(TNODE *&pt,int key)
{
	TNODE *p,*q,*r;
	dynamic_search(pt,key,p,q);
	if (q==NULL)
		return -1;
	if (p==NULL)
		if (q->lchild==NULL)
			pt=q->rchild;
		else
		{
			pt=q->lchild;
			r=q->lchild;
			while (r->rchild!=NULL)
				r=r->rchild;
			r->rchild=q->rchild;
		}
	else
		if (q->lchild=NULL)
			if (q==p->lchild)
				p->lchild=q->rchild;
			else
				p->rchild=q->rchild;
		else
		{
			r=q->lchild;
			while (r->rchild!=NULL)
				r=r->rchild;
			r->rchild=q->rchild;
			if (q==p->lchild)
				p->lchild=q->lchild;
			else
				p->rchild=q->lchild;
		}
	delete q;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -