Re: [問題] 二元樹建立問題
※ 引述《cismjmgoshr (--???--)》之銘言:
: ※ 引述《darkcookies (D-GRAY MAN)》之銘言:
: : 開發平台(Platform): GCC
: : 額外使用到的函數庫(Library Used):
: : 問題(Question):請問我有一個輸入是
: : 5 1 1 4 1 0 8 1 1 11 1 1 13 0 0 4 0 1 7 0 0 2 0 0 1 0 0
: : 樹長成
: : 5
: : / \
: : 4 8
: : / / \
: : 11 13 4
: : / \ \
: : 7 2 1
: T代表現在的二元樹,Q代表現在佇列的狀態
: 佇列的第一個元素代表下一個節點要接的位置(例如5L表示要接在5這個節點的左邊)
: 每次加入一個節點之後,就把它的子樹位置加到佇列的最後面
: 輸入:(每3個數字代表一個節點)
: 5 1 1 4 1 0 8 1 1 11 1 1 13 0 0 4 0 1 7 0 0 2 0 0 1 0 0
: Step 1:
: 5 1 1 ,根節點. 加入5L,5R至佇列
: T:
: 5
: Q: 5L 5R
struct node{
int value;
node *left;
node *right;
};
void createTree(int *d,int *l ,int *r ,int num,node *&root){
node *p[num];
queue<node *> add;
for(int x = 0; x < num; x++)
{
p[x] = new node;
p[x]->value = d[x];
p[x]->left = NULL;
p[x]->right = NULL;
cout << "節點" << x+1 << "設值完成:" << d[x] << endl;
}
for(int x = 0;x < num; x++)
{
if(l[x]==1)
{
add.push(p[x]->left);
}
if(r[x]==1)
{
add.push(p[x]->right);
}
if(add.size()!=0)
{
add.front() = p[x+1];
}
add.pop();
}
cout << p[1]->left->value;
//add.push(p[0]->value);
//cout << "add[0]:" << add.front() << endl;
}
請問為什麼我建好二元樹之後想看他節點的值一值當掉,是我記憶體配錯嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.48.17
→
02/01 06:03, , 1F
02/01 06:03, 1F
推
02/01 08:11, , 2F
02/01 08:11, 2F
→
02/01 08:12, , 3F
02/01 08:12, 3F
→
02/01 11:39, , 4F
02/01 11:39, 4F
→
02/01 11:40, , 5F
02/01 11:40, 5F
→
02/01 22:42, , 6F
02/01 22:42, 6F
→
02/01 22:43, , 7F
02/01 22:43, 7F
討論串 (同標題文章)