レベルオーダートラバーサルから完全ツリーを構築する方法は?レベルオーダートラバーサルから完全ツリーを構築する方法
合計= 7つのノード
20,8,22,4,12、-1、-1
20
/\
8 22
/\ /\
4 12 -1 -1
にあなたも
バイナリツリーに-1を持つダミーノードを有することができますこのレベルからツリーを構築する これはできませんか?
レベルオーダートラバーサルから完全ツリーを構築する方法は?レベルオーダートラバーサルから完全ツリーを構築する方法
合計= 7つのノード
20,8,22,4,12、-1、-1
20
/\
8 22
/\ /\
4 12 -1 -1
にあなたも
バイナリツリーに-1を持つダミーノードを有することができますこのレベルからツリーを構築する これはできませんか?
私には簡単な挿入のようです。 指定した順序でノードの値を取得した場合は、再帰的挿入を実行するだけです。あなたに
void insert(node_t **root, int val)
{
if (*root == NULL) {
*root = malloc(sizeof(node_t));
*root->val = val;
*root->left = NULL;
*root->right = NULL;
} else if ((*root)->val >= val) {
insert(&(*root)->left, val);
} else {
insert(&(*root)->right, val);
}
}
は、次のようにあなたがそれを呼び出すことができます主な機能です:
int main (void)
{
node_t *root = NULL;
// call this with each value in
insert(&root, <your value>);
}
まず、ピボット値を見つける必要があります。これらの操作を実行した後、要素をソートします(ソートアルゴリズムはbを使用してバブルソートを行います)。
'LeftChildIndex = 2 * ParentIndex'と' RightChildIndex = 2 * ParentIndex + 1'(1-inde )。 – Jarod42
あなたは[this](http://stackoverflow.com/help/how-to-ask)を読んで[MCVE](http://stackoverflow.com/help/mcve)を投稿してください – Mirakurun
私は投票をしていません私たちは「gimme teh codez」のサイトではないので、この質問は話題にはなりません!座って宿題をする時間! – Olaf