[問題] 請問以下交換二元樹節點的程式有甚麼錯?
請問以下交換二元樹節點的程式有甚麼錯?
我寫的交換二元樹節點的程式如下:
#include <iostream>
using namespace std;
struct node
{ int data;
struct node *left;
struct node *right;
};
void swaptree(struct node *t)
{
static int i=1;
struct node *p;
if ( t!=NULL)
{ p->left; t->left=t->right; t->right=p;
printf("第%d個節點的值為%d",i,t->data);
i++;
swaptree(t->left);
swaptree(t->right);}
}
int main(void) {
struct node *h1,*h2,item1,item2,item3,item4,item5;
h1=&item1; h2=&item1;
item1.data=1;item1.left=&item2;item1.right=&item3;
item2.data=2;item2.left=&item4;item2.right=&item5;
item3.data=3;item3.left=NULL;item3.right=NULL;
item4.data=4;item4.left=NULL;item4.right=NULL;
item5.data=5;item5.left=NULL;item5.right=NULL;
swaptree(h1);
return 0;
}
------------------------------------------------------------
我在http://ideone.com/LrZpN1
貼以上程式碼
結果是
第1個節點的值為1第2個節點的值為3
而不是我想的"第1個節點的值為1第2個節點的值為3第3個節點的值為2第4個節點的值為5
第5個節點的值為4"
看起來這個程式只有進入第一個遞迴swaptree(t->left);
而沒有進入第二個遞迴swaptree(t->right);
請問各位高手可以幫忙除錯呢?
拜託各位大大了...我真的弄了好久好久
拜託了
謝謝謝謝謝謝謝謝謝謝謝謝...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.88.61 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1568507723.A.5D6.html
→
09/15 09:14,
4年前
, 1F
09/15 09:14, 1F
→ Jockey66666: compiler warning看一下
推
09/15 09:16,
4年前
, 2F
09/15 09:16, 2F
謝謝各位 我弄出來了 感激不盡
※ 編輯: cat99961 (180.176.88.61 臺灣), 09/15/2019 09:40:52
※ 編輯: cat99961 (180.176.88.61 臺灣), 09/15/2019 09:47:57
→
09/15 12:16,
4年前
, 3F
09/15 12:16, 3F
→
09/15 12:17,
4年前
, 4F
09/15 12:17, 4F
→
09/15 12:17,
4年前
, 5F
09/15 12:17, 5F