主题:二叉树一个问题,急死了,求高手赐教
请教高手个问题,在/* 对二叉树 t 中所有结点的左右子树进行交换 */和 /*求度为“1”的结点总数*/程序中 怎么检查没有错误,老运行不出来,你看看是不是哪个细节出了问题,清高手不吝赐教,感谢!
/* 对二叉树 t 中所有结点的左右子树进行交换 */
include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include<shlobj.h>
#define MAXNODE 100
//树的建立
typedef struct bitnode
{ char data;
struct bitnode *lchild,*rchild;
}bitnode,*bintree;
//二叉树的二叉链表的存储算法
void createbintree(bintree *t)
{ char ch;
cin>>ch;
if(ch=='0')
(*t)=NULL;
else
{ (*t)=new bitnode;
(*t)->data=ch;
createbintree(&(*t)->lchild);
createbintree(&(*t)->rchild);
}
}
/* 对二叉树 t 中所有结点的左右子树进行交换 */
void exchange(bitnode *t)
{bitnode *p;
p=t->lchild;
t->lchild=t->rchild;
t->rchild=p;
exchange(t->lchild);
exchange(t->rchild);
}
/*exchange*/
void main()
{
bintree bt;
createbintree(&bt);
exchange(bt);
}
/*求度为“1”的结点总数*/
#include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include<shlobj.h>
#define MAXNODE 100
//树的建立
typedef struct bitnode
{ char data;
struct bitnode *lchild,*rchild;
}bitnode,*bintree;
//二叉树的二叉链表的存储算法
void createbintree(bintree *t)
{ char ch;
cin>>ch;
if(ch=='0')
(*t)=NULL;
else
{ (*t)=new bitnode;
(*t)->data=ch;
createbintree(&(*t)->lchild);
createbintree(&(*t)->rchild);
}
}
int onechild(btree * b)/*求度为“1”的结点总数*/
{
int num1,num2;
if(b==NULL)return(0);
else if((b->lchild==NULL&&b->rchild!=NULL)||(b->lchild!=NULL&&b->rchild==NULL))
return(1);
else
{
num1=onechild(b->lchild);
num2=onechild(b->rchild);
return(num1+num2);
}
}
void main()
{ bintree bt;
createbintree(&bt);
printf("结点为1的个数为:");
printf("%d",onechild(bt));
}
/* 对二叉树 t 中所有结点的左右子树进行交换 */
include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include<shlobj.h>
#define MAXNODE 100
//树的建立
typedef struct bitnode
{ char data;
struct bitnode *lchild,*rchild;
}bitnode,*bintree;
//二叉树的二叉链表的存储算法
void createbintree(bintree *t)
{ char ch;
cin>>ch;
if(ch=='0')
(*t)=NULL;
else
{ (*t)=new bitnode;
(*t)->data=ch;
createbintree(&(*t)->lchild);
createbintree(&(*t)->rchild);
}
}
/* 对二叉树 t 中所有结点的左右子树进行交换 */
void exchange(bitnode *t)
{bitnode *p;
p=t->lchild;
t->lchild=t->rchild;
t->rchild=p;
exchange(t->lchild);
exchange(t->rchild);
}
/*exchange*/
void main()
{
bintree bt;
createbintree(&bt);
exchange(bt);
}
/*求度为“1”的结点总数*/
#include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include<shlobj.h>
#define MAXNODE 100
//树的建立
typedef struct bitnode
{ char data;
struct bitnode *lchild,*rchild;
}bitnode,*bintree;
//二叉树的二叉链表的存储算法
void createbintree(bintree *t)
{ char ch;
cin>>ch;
if(ch=='0')
(*t)=NULL;
else
{ (*t)=new bitnode;
(*t)->data=ch;
createbintree(&(*t)->lchild);
createbintree(&(*t)->rchild);
}
}
int onechild(btree * b)/*求度为“1”的结点总数*/
{
int num1,num2;
if(b==NULL)return(0);
else if((b->lchild==NULL&&b->rchild!=NULL)||(b->lchild!=NULL&&b->rchild==NULL))
return(1);
else
{
num1=onechild(b->lchild);
num2=onechild(b->rchild);
return(num1+num2);
}
}
void main()
{ bintree bt;
createbintree(&bt);
printf("结点为1的个数为:");
printf("%d",onechild(bt));
}