Мне нужно найти узел в двоичном дереве со значением n и вернуть его ссылку. И я должен найти его, используя только порядок обхода. Зачем? Потому что это трюк.Как найти узел, использующий обход в порядке в двоичном дереве?
Я запутался, потому что я считаю, что единственный способ добиться обхода в порядке - это использовать рекурсию. Таким образом, рекурсия автоматически имеет оператор return для базового условия, но мы также хотим вернуть найденный узел. Таким образом, для этого требуется другое выражение return, и это может запутать.
Node Защиту:
struct node {
int item;
node* l; // Link to left child
node* r; // Link to right child
};
typedef node* link;
Моя попытка:
link find(link x,int n) {
if (x == 0) return; // Base condition for recursion
find(x->l,n);
if (x->item == n) return x;
find(x->r,n);
}
Как вернуть нулевое значение, если данный узел не существует в дереве?
_ «Я не уверен, что это делает то, что мы хотим.» _ Так вы действительно его протестировали? Также, пожалуйста, проясните, что вы хотите сделать. –
Я имел в виду, что он явно неполный. Я имею в виду, что, если узел не существует? –
И что такое 'link', пожалуйста? Извините, что мои шарики из хрусталя отключены для ремонта, у меня плохой день :-(.... –