// ConsoleApplication6.cpp: 定义控制台应用程序的入口点。
//
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
struct thetree
{
int data;
struct thetree *left;
struct thetree *right;
#include <stdio.h>
#include <stdlib.h>
struct thetree
{
int data;
struct thetree *left;
struct thetree *right;
};
thetree *insert(int shu, thetree *T)
{
if (T == NULL) {
T = (thetree *)malloc(sizeof(struct thetree));
T->data = shu;
T->left = NULL;
T->right = NULL;
}
else if (shu < T->data) {
T->left = insert(shu, T->left);
}
else if (shu > T->data) {
T->right = insert(shu, T->right);
}
}
thetree *find(int shu, thetree *T)
{
if (T == NULL)
return NULL;
if (shu < T->data)
return find(shu, T->left);
else if (shu > T->data)
return find(shu, T->right);
else
return T;
thetree *insert(int shu, thetree *T)
{
if (T == NULL) {
T = (thetree *)malloc(sizeof(struct thetree));
T->data = shu;
T->left = NULL;
T->right = NULL;
}
else if (shu < T->data) {
T->left = insert(shu, T->left);
}
else if (shu > T->data) {
T->right = insert(shu, T->right);
}
}
thetree *find(int shu, thetree *T)
{
if (T == NULL)
return NULL;
if (shu < T->data)
return find(shu, T->left);
else if (shu > T->data)
return find(shu, T->right);
else
return T;
return T;
}
thetree *findMin(thetree *T)
{
if (T == NULL)
return NULL;
else if (T->left == NULL)
return T;
else
return findMin(T->left);
}
}
thetree *findMin(thetree *T)
{
if (T == NULL)
return NULL;
else if (T->left == NULL)
return T;
else
return findMin(T->left);
}
thetree *remove(int shu,thetree *T)
{
thetree *tmpNode;
{
thetree *tmpNode;
if (T == NULL) {
printf("emmmmmmm\n");
}
else if (shu < T->data) {
T->left= remove( ,T->left);
}
else if (shu > T->data) {
T->right = remove(shu, T->right);
//找到该元素,开始删除
}
else if (T->left && T->right) {
//有两个子树的情况
tmpNode = findMin(T->right);
T->data = tmpNode->data;
printf("emmmmmmm\n");
}
else if (shu < T->data) {
T->left= remove( ,T->left);
}
else if (shu > T->data) {
T->right = remove(shu, T->right);
//找到该元素,开始删除
}
else if (T->left && T->right) {
//有两个子树的情况
tmpNode = findMin(T->right);
T->data = tmpNode->data;
T->right = remove(T->data, T->right);
}
else {
//有一个或没有子树的情况
tmpNode = T;
if (T->left == NULL)
T = T->right; //绕过被删除的节点
}