[問題] C 二元樹新增資料
我在新增二元樹資料的時候新增的前兩筆資料可以進去
可是到第三筆資料的時候root的內容卻不見了
想問一下我是哪個地方打錯Orz
struct Tree
{
int data;
struct Tree *left;
struct Tree *right;
};
typedef struct Tree *tree;
------------------------------------------------------
int main()
{
int n=0;
tree root=NULL;
while(n!=-1)
{
printf("二元樹的 1)新增 2)搜尋 3)中序印出 4)後序印出 5)深度 -1)離開 :");
scanf("%d",&n);
switch(n)
{
case 1:
add(&root);
break;
-------------------------------------------------------
void add(tree *root)//新增
{
int num;
tree runptr=*root;
tree tempptr=NULL;
tree newdata=(tree)malloc(sizeof(Tree));
printf("輸入數字:");
scanf("%d",&num);
if(runptr==NULL)
{
newdata->data=num;
newdata->left=NULL;
newdata->right=NULL;
*root=newdata;
}
else
{
while(runptr!=NULL)//跑完後runptr會等於NULL tempptr等於runptr的上一個節點
{
tempptr=runptr;
if(num>runptr->data)//右移
runptr=runptr->right;
else if(num<runptr->data)//左移
runptr=runptr->left;
}
if(num>tempptr->data)//放右邊
{
tempptr->right=newdata;
newdata->data=num;
newdata->left=NULL;
newdata->right=NULL;
}
else if(num<tempptr->data)//放左邊
{
tempptr->left=newdata;
newdata->data=num;
newdata->left=NULL;
newdata->right=NULL;
}
}
free(runptr);
free(tempptr);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.13.23.248
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1525119529.A.59E.html
→
05/01 12:53,
6年前
, 1F
05/01 12:53, 1F
推
05/01 14:46,
6年前
, 2F
05/01 14:46, 2F
推
05/10 03:37,
6年前
, 3F
05/10 03:37, 3F
Programming 近期熱門文章
PTT數位生活區 即時熱門文章