2015-01-28 2 views
0

Я создал двоичное дерево из классов в C++. Моя функция вставки нерекурсивна и выглядит следующим образом:Tree Traversal не печатает правильный порядок

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

Тем не менее, я вижу это: значение: 3 значение: 2 значение: 4 значение: 6 значение: 7 значение: 5

Может ли кто-нибудь сказать мне, почему он печатает значения в неправильном порядке?

+0

Включите функцию preOrderPrintRec(). – Steephen

ответ

1

Вы звоните preOrderPrintRec() внутри своей функции postOrderPrintRec(). Это означает, что вы выполняете только обход по порядку на верхнем уровне дерева. Вместо этого позвоните postOrderPrintRec(), и я думаю, что это исправит.

+0

LOL. О, мой .. как смущение. Спасибо. Должен ли я удалить этот вопрос или ...? – James4701

 Смежные вопросы

  • Нет связанных вопросов^_^