Ich machte einen Code ist die Eingabe von Werten zu einem Binary-Tree durch eine Insert-Funktion nodeT * insertT (nodeT ** pp, int iValue). Ohne Bedeutung der Reihenfolge der Werte fügt meine Funktion die Werte der Reihe nach in den Baum ein, vermeidet Duplikate und druckt korrekt.Binär-Baum-Code wird nicht richtig funktionieren
Insert Values for Binary Tree(-1 to stop)4 6 8 10 12 14 16 -1
The contents of the tree are:
4 6 8 10 12 14 16
Input a number whitin the range of the tree to receive the kth Smallest
5
the smallest 5th element is: 12
count of node: 7
Allerdings, wenn ich Werte Eingang nicht bestellt, die Funktionen CountNode und KTH kleinste Element wird der Wunsch Ausgang nicht zurück. Außerdem ist die Anzeige des Binärbaums korrekt. Für das Beispiel
Insert Values for Binary Tree(-1 to stop)10 14 6 8 12 4 16 -1
The contents of the tree are:
4 6 8 10 12 14 16
Input a number whitin the range of the tree to receive the kth Smallest
5
the smallest 5th element is: 0
count of node: 3
ich die folgenden Funktionen verwendet, insert, k_smallest
nodeT *insertT(nodeT **pp, int iValue)
{
if(*pp == NULL)
{
*pp = allocateNodeT(iValue);
return *pp;
}
if(iValue == (*pp)->iValue)
{
return *pp;
}
if(iValue < (*pp)->iValue)
{
return insertT(&(*pp)->pLeft, iValue);
}
else //(iValue > (*pp)->iValue)
{
return insertT(&(*pp)->pRight, iValue);
}
}
int k_smallest(nodeT *pRoot, int iKey)
{
int iSave;
if(pRoot)
{
nodeT* pTraverse;
pTraverse =pRoot;
while(pTraverse)
{
if((pTraverse->iCount +1) == iKey)
{
iSave = pTraverse->iValue;
break;
}
else if(iKey > pTraverse->iCount)
{
iKey = iKey-(pTraverse->iCount +1);
pTraverse = pTraverse->pRight;
}
else
{
pTraverse = pTraverse->pLeft;
}
}
}
return iSave;
}
Wäre es möglich, dass Sie uns den Code für den Binärbaum und die Knoten zeigen? – jrhee17
@ jrhee17 Ich habe den Rest des Codes eingereicht –