C++의 클래스에서 이진 트리를 만들었습니다. 내 삽입 기능은 비 반복적이며, 다음과 같습니다 : 나는 통과하고이 기능을 후 주문 통과를 사용하여 트리를 인쇄트리 순회 올바른 순서로 인쇄되지 않습니다.
bool Tree1::inOrderInsert(int x)
{
TreeNode *parent = NULL;
TreeNode *temp = root;
TreeNode *newNode = new TreeNode(x);
if (root == NULL)
{
root = newNode;
//cout << "Root empty!" << endl;
return true;
}
while (temp != NULL)
{
if (x <= temp->value)
{
parent = temp;
temp = temp->left;
}
else
{
parent = temp;
temp = temp->right;
}
}
if (x <= parent->value)
{
parent->left = newNode;
return true;
}
else
{
parent->right = newNode;
return true;
}
}
:이 같은 주에 삽입하고 값을 인쇄
void Tree1::postOrderPrintRec(TreeNode *node)
{
if (node != NULL)
{
preOrderPrintRec(node->left);
preOrderPrintRec(node->right);
cout << "Value: " << node->value << endl;
}
}
: 다음과 같이 내가 코드를 실행할 때 내가보고해야
tree1.inOrderInsert(5);
tree1.inOrderInsert(3);
tree1.inOrderInsert(2);
tree1.inOrderInsert(4);
tree1.inOrderInsert(6);
tree1.inOrderInsert(7);
tree1.postOrderPrintRec(tree1.getRoot());
값은 다음과 같습니다 값 : 2 값 : 4 값 : 3 값 : 7 값 : 6 값 : 값 : 그러나 5
, I는이 메시지가 표시되는 3 값 : 2 값 : 4 값 : 6 값 : 7 값 : 5
잘못된 순서로 값이 왜 인쇄되고 있는지 누가 알 수 있습니까?
문제의 preOrderPrintRec() 함수를 추가하십시오. – Steephen