首页 新闻 搜索 专区 学院

c语言数据结构 二叉树

0
悬赏园豆:50 [待解决问题]

题目:给定一棵用二叉链表表示的二叉树,其根结点指针为T,求二叉树的结点值为e的节点数目。

int getNode(BiTree T, int e)
{
static int count = 0;
if (T.data!=NULL) {
visit(T.data);
if (T.data == e)
{
count++;
}
getNode((T.lchild),e);
getNode(
(T.rchild),e);

}
return count;

}
void main()
{
BiTree T,p1,p2,p3,p4,p5;
Initiate(&T);
Initiate(&p1);
Initiate(&p2);
Initiate(&p3);
Initiate(&p4);
Initiate(&p5);
T->data = 5;
p1->data = 2;
p2->data = 2;
p3->data = 3;
p4->data = 6;
p5->data = 11;
T->lchild = p1;
T->rchild = p2;
p1->lchild = p3;
p1->rchild = p4;
p2->rchild = p5;
printf("%d\n",LeafNodes(T) );
getNode(*T, 2);

}

运行结果如上,我这个代码遍历不了二叉树,是哪里有什么问题吗?求大佬们帮忙看看

噗噗噗pu的主页 噗噗噗pu | 初学一级 | 园豆:152
提问于:2021-04-27 15:45
< >
分享
所有回答(1)
0

1、链表基本的Node结构里面,左右节点都应该是Node指针,所以应该是T->lchild,T->rchild,而不是T.lchild,T.rchild

2、你的getNode函数入口退出条件应该判断当前的T节点是否为NULL,也就是NULL == T

Arthurian | 园豆:1069 (小虾三级) | 2021-04-27 19:28

int getNode(BiTree *T, int e)
{
static int count;
visit(T->data);
if (T->data!=NULL) {
if (T->data == e)
{
count++;
}
else {
getNode(T->lchild,e);
getNode(T->rchild,e);
}

}

return count;
}
你好,我改了之后还是遍历不了所有节点

支持(0) 反对(0) 噗噗噗pu | 园豆:152 (初学一级) | 2021-04-28 18:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册