C语言二叉树的插入节点问题,小弟我有一点不是很明白,下面是向二叉树中插入节点的代码:

2024-12-19 02:23:23
推荐回答(5个)
回答1:

C语言二叉树的插入节点问题,小弟我有一点不是很明白,下面是向二叉树中插入节点的代码:
貌似没搞明白 指针 和 二级指针的概念。。。
你的代码我该了一下。你看看。
//输入示例: ab..c.d..
#includestdio.h>
#includemalloc.h>
#define DataType char
int LeafCount=0; //统计叶子节点的数目
typedef struct Node //定义一个二叉树节点类型
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BiTNode,*BiTree;
//这在里单是BiTree bt 传指针是不对的,因为你在CreateBiTree 函数中更改了 bt 的指向,此刻的bt 和 传进来的 root 就没有联系了。。。所以建立的根本就不是二叉树。。你再想想看。。。
void CreateBiTree(BiTree *bt) //创建一个二叉树
{
char ch;

ch=getchar();
printf(

回答2:

你贴的代码不全,不过从下边的代码可以推断出
if(pNode->pLeft==NULL)
{
/*pNode->pLeft=NodeCreat(value);
return pNode->pLeft;*/
//可以这样吗??/*return NodeAdd(value,pNode->pLeft);*/
}
else
return NodeAdd(value,pNode->pLeft);
}
NodeCreat函数实际上应该是包含了NodeAdd的操作,前者可能申请了内存并赋值,后者是在已经申请内存的前提下只赋值,因此
if(pNode->pLeft==NULL)
{
/*pNode->pLeft=NodeCreat(value);
return pNode->pLeft;*/
//可以这样吗??/*return NodeAdd(value,pNode->pLeft);*/
}
当pNode->pLeft==NULL时,需要先申请内存再赋值,仅仅return NodeAdd(value,pNode->pLeft);应该会出现段错误吧

回答3:

函数开始阶段,如果pNode==NULL,这时候,你只创建了一个节点,并没有把节点加入二叉树中。

回答4:

你的代码我该了一下。你看看。
//输入示例: ab..c.d..
#include
#include
#define DataType char
int LeafCount=0; //统计叶子节点的数目
typedef struct Node //定义一个二叉树节点类型
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BiTNode,*BiTree;
//这在里单是BiTree bt 传指针是不对的,因为你在CreateBiTree 函数中更改了 bt 的指向,此刻的bt 和 传进来的 root 就没有联系了。。。所以建立的根本就不是二叉树。。你再想想看。。。
void CreateBiTree(BiTree *bt) //创建一个二叉树
{
char ch;

ch=getchar();
printf(
另外,团IDC网上有许多产品团购,便宜有口碑

回答5:

C语言二叉树的插入节点问题,小弟我有一点不是很明白,下面是向二叉树中插入节点的代码:
假如你凝视的是喜欢的人,你会微笑。