Я действительно смущен тем, что нашел элемент в binary tree
.Найти максимальный элемент в двоичном дереве
Вопрос: Когда мы говорим, поиск элемента в бинарном дереве, максимума в этом случае, мы предполагаем, что дерево сортируются ???
Если нет, посмотрите на код ниже, я получил его от книги и почти каждый интернет гиперссылка предлагает, подобный образец
int FindMaxNmb(BinaryTreeNode root)
{
int root_val,left,right,max;
if(root!=null)
{
root_val = root.getData();
//recursion - this is what i dont understand
/*
*
* This code would have made sense if binary tree contained
* sorted elements,like The left subtree of a node contained
* only nodes with keys less than the node's key The right subtree
* of a node contained only nodes with keys greater
* than the node's key.
*
* */
left = FindMaxNmb(root.getLeft());
right = FindMaxNmb(root.getRight());
//Find max nmbr
if(left > right)
{
max = left;
}
else
{
max = right;
}
if(root_val > max)
{
max = root_val;
}
}
return max;
}
Что я не undertsand: принять этот recusrion к примеру left = FindMaxNmb(root.getLeft());
это будет продолжайте вызов, если он не достигнет крайнего левого нижнего листа, а затем присваивает значение, то же самое с getRight()
.... но эта вещь работает только для самого левого узла, имеющего 2 дочерних ... как он проверяет значение оставшихся узлов (i Предполагая, что двоичное дерево не отсортировано)
Я знаю, что мне не хватает чего-то очень очевидного здесь ... пожалуйста, помогите !!
ОК .. прошу простую простую ... в коде, который я опубликовал, его поисковый макс элемент под презумпцией BST, а не BT ... правильно ?? – NoobEditor
позвольте нам [продолжить обсуждение в чате] (http://chat.stackoverflow.com/rooms/47073/discussion-between-noobeditor-and-user2864740) – NoobEditor