A
A
Alexey FRZ2019-06-15 18:06:04
C++ / C#
Alexey FRZ, 2019-06-15 18:06:04

How to make sense of the recursive function of outputting a binary search tree to the console?

It's about the Print function. How do I see her?
1. The last added element of the tree is used as a parameter ? And it is not clear why to pass the second parameter int. Actually, without understanding the parameters, I can not understand anything in the function itself.

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

struct BinTree{
  int value;
  BinTree* left;
  BinTree* right;
};
void newBinTree(int val, BinTree** Tree) { // пам1 знач, пам2 указ на указ
  if ((*Tree) == NULL){ // пам2 нулл? ...
    (*Tree) = new BinTree;
    (*Tree)->value = val;
    (*Tree)->left = (*Tree)->right = NULL; // полям left и right присвоить null
    return;
  }
  if (val > (*Tree)-> value){ // если переданное больше предыдущего
    newBinTree(val, &(*Tree)->right); // поместить его в право, передается параметр, и второй параметр ссылка на добавляемый и в право
  } else {
    newBinTree(val, &(*Tree) -> left); // иначе в левый
  }
}

void Print(BinTree**Tree, int l){
  int i;
  if (*Tree != NULL) {
    Print(&((**Tree).left), l + 1);
    for (i = 1; i <= l; i++){
      cout << " ";
    }
    cout << (**Tree).value << endl;
        Print(&((**Tree).right), l + 1);

  }
}

int main() {
   BinTree* Tree = NULL; // создаем указатель на структуру и присваиваем ему null (ноль) по умолчанию, в tree хранится адрес указателя
   vector<int> result;
   vector<int> numbers = {8, 3, 10, 1, 6, 14, 4, 7, 13};
   for(auto k : numbers) {
      newBinTree(k, &Tree); // после первой итерации tree будет уже объект корень
      }
   Print(&Tree, 0);

return 0;
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
Vladimir Olohtonov, 2019-06-15
@leshqow

Here is an implementation of inorder tree traversal, albeit a rather ugly one.
The number passed is simply the number of spaces before the top itself.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question