(高分悬赏,答案满意着追加50分)修改二叉树程序成为二叉排序树

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:57:20
下面的程序构造了一个先序序列二叉树,然后实现了三种遍历~~
请按题目要求修改为二叉排序树,实现查找 插入 删除操作。周日中午前出答案~!!!!!!!

#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data;
struct node *lchild,*rchild;//
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
char ch;
ch=getchar();
if (ch == ' ')
T = 0;
else {
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;//生成根节点
CreatBiTree(T->lchild);//构造左子树
CreatBiTree(T->rchild);//构造右子树
}
}
void preorder(BiTree T)//前序遍历
{
if (T!=NULL){
printf ("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void inorder(BiTree T)//中序遍历
{
if (T!=NULL){
inorder(T->lchild);
printf ("%c",T->data);
inorder(T->rchild);
}
}
void postorder(BiTree T)//后序遍历
{
if

//插入:
void insert(Node * &tree,Node *p)
{
if(tree==NULL) tree=p;
else if(p==NULL) return;
else if(p->data<tree->data)
insert(tree->left,Node *p)
else insert(tree->right,Node *p)
}//

//查找
Node* &find(Node * &tree,const T& t)
{
if(tree==NULL) return tree;
if(tree->data==t) return tree;
if(t<tree->data) return find(tree->left,t);
else return find(tree->left,t);
}

//删除
void erase(Node *&tree,const T & t)
{
Node * &p=find(tree,t);
if(p==NULL) return;
insert(p->right,p->left);
Node *q=p;
p=p->right;
delete q;
}

这些用C++ 做的 用到了递归 指针
你给合起来
希望可以帮到你