Ejemplo n.º 1
0
int main()
{
	Status i;
	int j;
	position p;
	TElemType e;
	TElemType s;

	InitBiTree( T );
	CreateBiTree( T );
	printf("After initializing the Tree, is the Tree empty? Yes:1, No:0, the depth is: %d\n", BiTreeEmpty( T ), BiTreeDepth(T));
	i = Root( T, &e );
	if( i )
		printf("The root of the tree is: %d\n", e);
	else
		printf("The tree is empty!\n");

	printf("Traverse_1:\n");
	LevelOrderTraverse( T, visit );

	printf("Traverse_2:\n");
	InOrderTraverse( T, visit );

	printf("Traverse_3:\n");
	PostOrderTraverse( T, visit );

	printf("input the level number to be modified \n");
	scanf(" %d%d", &p.level, &p.order);
	e = Value( T, p);

	printf("The old value is %d, input new value: ", e);
	scanf(" %d", &e);

	Assign( T, p, e);
	printf("Traverse_1:\n");
	PreOrderTraverse( T, visit );

	printf("The parent of node %d is %d, left and right children are: ", e, Parent(T, e));
	printf("%d, %d, left and rignt brothers are:", LeftChild(T, e), RightChild(T, e));
	printf("%d, %d\n", LeftSibling(T, e), RightSibling(T, e));

	InitBiTree( s );
	printf("Initializing a Tree that has empty right subtree:\n");
	CreateBiTree( s );

	printf("The tree s insert to the tree T, input the parent node of s, s is left subtree or right subtree.");
	scanf(" %d%d%d", &p.level, &p.order, &j);
	DeleteChild( T, p, j);
	Print( T );

	clearBiTRee( T );
	printf("After clearing the tree, is the tree empty? Yes:1, No:0 %d\n", BiTreeEmpty( T ), BiTreeDepth(T));
	i = Root( T, &e );

	if( i )
		printf("The root of the bitree is %d\n", e);
	else
		printf("The tree is empty, no root!\n");
}
Ejemplo n.º 2
0
link CreateBiTree(char* str1, char* str2, int num)
{
   int k = 0;
   char tmp;
   if(num <= 0) return NULL;
   link t = Node(str1[0], NULL, NULL);
   for(tmp = *str1; tmp != str2[k]; k++) ;
   t->l = CreateBiTree(str1 + 1, str2, k);
   t->r = CreateBiTree(str1 + k +1, str2 + k + 1, num - k -1);
   return t;
}
Ejemplo n.º 3
0
void CreateBiTree(BiTree *bt)
{
	char ch;
	ch=getchar();
	if(ch=='.')*bt=NULL;
	else
	{
		*bt=(BiTree)malloc(sizeof(BiTNode));
		(*bt)->data=ch;
		CreateBiTree(&((*bt)->LChild));
		CreateBiTree(&((*bt)->RChild));
	}
}
Ejemplo n.º 4
0
 void main()
 {
   Status i;
   int j;
   position p;
   TElemType e;
   SqBiTree T,s;
   InitBiTree(T);
   CreateBiTree(T);
   printf("建立二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T));
   i=Root(T,&e);
   if(i)
     printf("二叉树的根为:%d\n",e);
   else
     printf("树空,无根\n");
   printf("层序遍历二叉树:\n");
   LevelOrderTraverse(T,visit);
   printf("中序遍历二叉树:\n");
   InOrderTraverse(T,visit);
   printf("后序遍历二叉树:\n");
   PostOrderTraverse(T,visit);
   printf("请输入待修改结点的层号 本层序号: ");
   scanf("%d%d",&p.level,&p.order);
   e=Value(T,p);
   printf("待修改结点的原值为%d请输入新值: ",e);
   scanf("%d",&e);
   Assign(T,p,e);
   printf("先序遍历二叉树:\n");
   PreOrderTraverse(T,visit);
   printf("结点%d的双亲为%d,左右孩子分别为",e,Parent(T,e));
   printf("%d,%d,左右兄弟分别为",LeftChild(T,e),RightChild(T,e));
   printf("%d,%d\n",LeftSibling(T,e),RightSibling(T,e));
   InitBiTree(s);
   printf("建立右子树为空的树s:\n");
   CreateBiTree(s);
   printf("树s插到树T中,请输入树T中树s的双亲结点 s为左(0)或右(1)子树: ");
   scanf("%d%d",&e,&j);
   InsertChild(T,e,j,s);
   Print(T);
   printf("删除子树,请输入待删除子树根结点的层号 本层序号 左(0)或右(1)子树: ");
   scanf("%d%d%d",&p.level,&p.order,&j);
   DeleteChild(T,p,j);
   Print(T);
   ClearBiTree(T);
   printf("清除二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T));
   i=Root(T,&e);
   if(i)
     printf("二叉树的根为:%d\n",e);
   else
     printf("树空,无根\n");
 }
Ejemplo n.º 5
0
//创建一个二叉树,约定用户按照前序遍历的方式输入数据
void CreateBiTree(BiTree *T) {
	char c;
	scanf("%c",&c);
	
	if(' ' == c){
		*T = NULL;
	}else{
		*T = (BiTNode *)malloc(sizeof(BiTNode));
		(*T)->data = c;
		CreateBiTree(&(*T)->lchild);
		CreateBiTree(&(*T)->rchild);
	}
	
}
Ejemplo n.º 6
0
BiTree CreateBiTree()//先序递归创建树 
{     
	int p;BiTree T;     
	scanf("%d",&p);//注意每输入两个值的时候用空格各隔开     
	if(p==0)         
		T=NULL;     
	else{
		T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间         
		T->data=p;         
		T->lchild=CreateBiTree();         
		T->rchild=CreateBiTree();     
	}     
	return (T); 
} 
Ejemplo n.º 7
0
Archivo: main.c Proyecto: nilzyj/test
//µÝ¹é½¨Á¢¶þ²æÊ÷
int CreateBiTree(BiTree *T)
{
    char ch=getchar();
    if(ch=='#')
        (*T)=NULL;
    else
    {
        (*T)=(BiTNode *)malloc(sizeof(BiTNode));
        (*T)->data=ch;
        CreateBiTree(&((*T)->lchild));
        CreateBiTree(&((*T)->rchild));
    }
    return 1;
}
Ejemplo n.º 8
0
BiTree CreateBiTree(BiTree &T) {  // 算法6.4
  // 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,
  // 构造二叉链表表示的二叉树T。
  char ch;
  scanf("%c",&ch);
  if (ch=='#') T = NULL;
  else {
    if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return ERROR;
    T->data = ch;              // 生成根结点
    CreateBiTree(T->lchild);   // 构造左子树
    CreateBiTree(T->rchild);   // 构造右子树
  }
  return T;
} // CreateBiTree
Ejemplo n.º 9
0
//二叉树的创建
void CreateBiTree(BiThrTree &btt)
{
	char c;
	c=getchar();
	if(c=='#')
		btt=NULL;
	else
	{
		btt=(BiThrTree)malloc(sizeof(BiThrNode));
		btt->data=c;
		CreateBiTree(btt->lchild);
		CreateBiTree(btt->rchild);
	}
}
Ejemplo n.º 10
0
Status CreateBiTree(BiTree &T)  //按先序次序输入二叉树中结点的值(一个字符),空格表示空树
{         //构造二叉链表表示的二叉树T
 char ch;
 scanf("%c",&ch);
 if(ch=='#')T=NULL;
 else
 {
  if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
  T->data=ch;     //生成根结点
  CreateBiTree(T->lchild); //构造左子树
  CreateBiTree(T->rchild); //构造右子树
 }
 return OK;
}//CreatBiTree
Ejemplo n.º 11
0
/* 以先序遍历序列构造二叉链表存储的二叉树 */
void CreateBiTree(BiTree *T)
{
    char ch;

    scanf("%c", &ch);
    if(ch == '0')   *T = NULL;  /* 读入0时,将结点置空 */
    else
    {
        *T = malloc(sizeof(BiNode));
        assert(*T != NULL);
        (*T)->data = ch;
        CreateBiTree(&((*T)->lchild));
        CreateBiTree(&((*T)->rchild));
    }
}
Ejemplo n.º 12
0
int CreateBiTree(BiTree * T) { //声明的就是一个BiTree类型的指针,通过修改来对main中的T做修改,然后使其指向根结点
  // 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,
  // 构造二叉链表表示的二叉树T。
  int ch;
  printf("请输入一个根结点的值(如果为空,则输入0)\n");
  scanf("%d",&ch);
  if (ch==0) (*T)= NULL;
  else {
    if (!(*T = (BiTNode *)malloc(sizeof(BiTNode))))  return ERROR;
    (*T)->data = ch;              // 生成根结点
    CreateBiTree(&(*T)->lchild);   // 构造左子树
    CreateBiTree(&(*T)->rchild);   // 构造右子树
  }
  return OK;
} // CreateBiTree
Ejemplo n.º 13
0
BiTree CreateBiTree()
{
    char ch;
    BiTree T;
    scanf("%c",&ch);
    if(ch=='#')
	T=NULL;
    else
    {
	T=(BiTree)malloc(sizeof(BiTNode));
	T->data=ch;
	T->lchild=CreateBiTree();
	T->rchild=CreateBiTree();
    }
    return T;
}
Ejemplo n.º 14
0
int main() {
	Tree T;
	int k = 2;
	T = CreateBiTree(T);
	// printf("the %dth in preorder : %c\n", k, KthPreOrder(T, k));
	printf("the %dth in preorder : %c\n", k, PreNode(T, k));
}
Ejemplo n.º 15
0
void BiSortTree::AddBiTree(combine *x)//输入元素不可以重复
{
	BiTree *p=NULL,*q=NULL,*pre=NULL;
	bool LR=false;
	int lev=0;
	p=root;
	while(p!=NULL){
		if(p->value->key==x->key){//注意释放空间
			delete x;
			cout<<"main key is exist,can't insert!\n";
			return ;
		}
		pre=p;
		lev++;
		if(p->value->key>x->key){	
			p=p->left;
			LR=false;
		}
		else{	
			p=p->right;
			LR=true;
		}
		ChainAdd(pre,LR);
	}
	q=CreateBiTree(x);
	if(lev>level)
		level=lev;
	count++;
	if(root!=NULL)
		LR?pre->right=q:pre->left=q;
	else
		root=q;
	BlanceAdd();
	ChainDel();
}
Ejemplo n.º 16
0
void main()
{
	BiTree bt;
	printf("Enter a tree: ");
    CreateBiTree(&bt);
	LayerOrder(bt);
}
Ejemplo n.º 17
0
void CreateBiTree(BiTree *&T)
{
	if(ch[i]=='#') 
	{
		i++;
		T=NULL;
	}
	else 
	{
		T=(BiTree *)malloc(sizeof(BiTree)); 
		T->data=ch[i];
		i++;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild); 
	}
}
Ejemplo n.º 18
0
bool CreateBiTree(BiTree &root) {
	char ch;
	scanf("%c", &ch);
	
	if (ch == '\n')            scanf("%c", &ch);               //Åųý»Ø³µ¼ü
	if (ch == '.')     root = NULL;
	else {
		if (!(root = (BiTree)malloc(sizeof(BiTnode))))
			exit(0);
		root->date = ch;
		CreateBiTree(root->lchild);
		CreateBiTree(root->rchild);
	}

	return true;
}
Ejemplo n.º 19
0
Archivo: main.c Proyecto: nilzyj/test
int main()
{
    BiTree T;
    SqStack S;
    Initstack(&S);
    CreateBiTree(&T);
//    printf("ÏÈÐòµÝ¹é±éÀú");
//    PreOrder(T);
//    printf("\n");
//    printf("ÖÐÐòµÝ¹é±éÀú");
//    InOrder(T);
//    printf("\n");
//    printf("ºóÐòµÝ¹é±éÀú");
//    PostOrder(T);
    printf("\n");
    printf("ÏÈÐò·ÇµÝ¹é±éÀú");
    PreOrderUn(T);
    printf("\n");
//    printf("ÖÐÐò·ÇµÝ¹é±éÀú");
//    InOrderUn(T);
    printf("\n");
//    printf("ºóÐò·ÇµÝ¹é±éÀú");
//    PostOrderUn(&S,T);
    printf("\n");
    return 0;
}
Ejemplo n.º 20
0
int main()
{
	BiTree root=NULL;
	printf("Create BiTree..\n");
	CreateBiTree(&root);
	printf("\nDone!!!!\n");

	printf("PreOrderTraverse..\n");
	PreOrderTraverse( root);
	printf("\n");
	PreOrderTraverse_1( root);
	printf("\nDone!!!!\n");

	printf("InOrderTraveerse..\n");
 	InOrderTraverse(root);
	printf("\n");
 	InOrderTraverse_1(root);
	printf("\nDone!!!!\n");

	printf("PostOrderTravaerse..\n");
	PostOrderTraverse(root);
	printf("\n");
	PostOrderTraverse_1(root);
	printf("\nDone\n");
	BiTree_free(&root);

	return 0;
}
Ejemplo n.º 21
0
Archivo: e25.cpp Proyecto: cqiyi/kaoshi
Status CreateBiTree(BiTree &T)
{
	char ch ;
	scanf("%c",&ch);
	getchar();
	if(ch == ' ')
		T = NULL;
	else
	{
		if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))
			exit(0);
		T->data = ch;					//生成根节点
		CreateBiTree(T->lchild);			//构造左子树
		CreateBiTree(T->rchild);		//构造右子树
	}
	return OK;
}
Ejemplo n.º 22
0
void main()
{
	BiTree T;
	printf("input\n");
	CreateBiTree(T);
	pre(T);

}
Ejemplo n.º 23
0
int main()
{
	BiThrTree bt,btt;
	CreateBiTree(bt);
	InOrderTraverse(btt,bt);
	PreOrderTraverse(bt);
	printf("\n");
	return 0;
}
Ejemplo n.º 24
0
int main()
{
    int level = 1;
    BiTree T = NULL;

    CreateBiTree(&T);
    PreOrderTraverse(T, level);

    return 0;
}
Ejemplo n.º 25
0
BinaryTree * CreateBiTree(){
			
	char c;
	BinaryTree * binaryTree=NULL;

	c=getchar();
	
	if(c==' '){
		binaryTree=NULL;
	}else{
		binaryTree=InitBiTree();
		binaryTree->data=c-'0';
		binaryTree->lChild=CreateBiTree();
		binaryTree->rChild=CreateBiTree();
	}
	
	return binaryTree;

}	
Ejemplo n.º 26
0
int CreateBiTree(BiTree *T)
{
     char data;
     printf("Enter data:");
     scanf("%c",&data);
     getchar();
     if(data=='#')
     {
          *T=NULL;
     }
     else
     {
          *T=(BiTree)malloc(sizeof(BiTNode));
          (*T)->data=data;
          CreateBiTree(&((*T)->lchild));
          CreateBiTree(&((*T)->rchild));
     }
     return 0;
}
Ejemplo n.º 27
0
/* 二叉树的建立 */
void CreateBiTree(BiTree *T)
{
    TElemtype ch;
    scanf("%c", &ch);

    if (ch == '#')
        *T = NULL;
    else
    {
        *T = (BiTree)malloc(sizeof(BiTNode));

        if (!*T)
            exit(OVERFLOW);

        (*T)->data = ch; // 生成根结点
        CreateBiTree(&(*T)->lchild); // 递归构造左子树
        CreateBiTree(&(*T)->rchild); // 递归构造右子树ava
    }
}
Ejemplo n.º 28
0
void CreateBiTree(BiTree *T)
{
  TElemType ch;
#ifdef CHAR
  scanf("%c",&ch);
#endif
#ifdef INT
  scanf("%d",&ch);
#endif
  if(ch==Nil) /* 空 */
    *T=NULL;
  else
  {
    *T=(BiTree)malloc(sizeof(BiTNode));
    if(!*T)
      exit(OVERFLOW);
    (*T)->data=ch; /* 生成根结点 */
    CreateBiTree(&(*T)->lchild); /* 构造左子树 */
    CreateBiTree(&(*T)->rchild); /* 构造右子树 */
  }
}
Ejemplo n.º 29
0
//#define CHAR
void CreateBiTree(BiTree *T)
{
	TElemType ch;
#ifdef CHAR
	scanf("%c", &ch);
#endif
#ifdef INT
	scanf("%d", &ch);
#endif

	if (ch == Nil)
		*T = NULL;
	else {
		*T = (struct BiTNode *)malloc(sizeof(struct BiTNode));
		if (*T == NULL)
			exit(OVERFLOW);
		(*T)->data = ch;
		CreateBiTree(&(*T)->lchild);
		CreateBiTree(&(*T)->rchild);
	}
}
Ejemplo n.º 30
0
void main()
{
  TElemType e;
  SqBiTree T;
  InitBiTree(T);
  CreateBiTree(T);
  printf("请输入待查询结点的值:");
  scanf("%d",&e);
  printf("结点%d的双亲为%d,左右孩子分别为",e,Parent(T,e));
  printf("%d,%d,左右兄弟分别为",LeftChild(T,e),RightChild(T,e));
  printf("%d,%d\n",LeftSibling(T,e),RightSibling(T,e));
}