㈠ 二叉树程序运行时怎么输入
那就要看你的程序是如何的了。我是初学者,我有一个程序如下:
#include
#include
struct
tree
{
char
d;
struct
tree
*lc,*rc;
};
struct
tree*
create()
{struct
tree*p;
char
c;
cin>>c;
if(c=='#')
return
0;
p=new
struct
tree;
p->d=c;
p->lc=create();
p->rc=create();
return
p;
}
void
first(struct
tree*q)
{
if(!q)
return;
cout<
d<<",";
first(q->lc);
first(q->rc);
}
void
last(struct
tree*q)
{
if(!q)
return;
last(q->lc);
last(q->rc);
cout<
d<<",";
}
void
mid(struct
tree*q)
{
if(!q)
return;
mid(q->lc);
cout<
d<<",";
mid(q->rc);
}
void
main()
{
struct
tree*head;
cout<<"请输入二叉树:"<
评论
0
0
0
加载更多
㈡ 怎么输入一个二叉树,树中每个节点存放了一个整数值
先定义二叉树的存储结构,不同的定义方法相应有不同的存储结构的建立算法。
如二叉树采用二叉链表存储结构,如下:
#define OK 1
#define OVERFLOW -1
typedef int TElemType;
typedef int Status;
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild ;//左孩子指针
struct BiTNode *rchild; // 右孩子指针
} BiTNode;//二叉树结点
typedef BiTNode *BiTree; //二叉树
int ch;
按给定的带 0 标记的先序序列定义一棵二叉树,如下:
Status CreateBiTree(BiTree &T)
{//按先序序列建儿叉树
scanf("%d",&ch);
if (ch= =0 ) T = NULL;
else {
if (!(T = (BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data = ch; // 生成根结点
CreateBiTree(T->lchild); // 构造左子树
CreateBiTree(T->rchild); // 构造右子树
}
return OK;
} // CreateBiTree
例如,输入先序序列如下:1 2 0 3 0 0 4 0 0
建立的二叉树如下:
1
/ \
2 4
\
3