У меня есть следующий вопрос, но у меня нет ответа на этот вопрос. Буду признателен, если мой метод правильный:
Q. При поиске значения ключа 60 в двоичном дереве поиска узлы, содержащие значения ключа 10, 20, 40, 50, 70, 80, 90, пересекаются, необязательно в указанном порядке. Сколько возможных порядков, в которых эти значения ключа могут встречаться в пути поиска от корневого узла, содержащего значение 60?
(A) 35 (B) 64 (C) 128 (D) 5040
Из этого вопроса я понимаю, что все указанные узлы должны быть включены в обход, и в конечном итоге мы должны достичь ключа 60. Например, одна такая комбинация будет:
10, 20, 40, 50, 90, 80, 70, 60.
Так как мы должны пройти все узлы, указанные выше, мы должны начать с 10 или 90. Если мы начнем с 20, мы не достигнем 10 (так как 60> 20, и мы пройдем правое поддерево 20)
Точно так же мы не можем начать с 80, потому что мы не сможем достичь 90, так как 80> 60, мы пройдем левое поддерево 80 и, таким образом, не достигнем 90.
Давайте возьмем 10. Остальные узлы - это 20, 40, 50, 70, 80, 90. Следующим узлом может быть 20 или 90. Мы не можем взять другие узлы по той же ранее упомянутой причине.
Если мы рассмотрим аналогично, на каждом уровне у нас есть два варианта. Поскольку есть 7 узлов, два варианта для первых 6 и нет выбора для последнего. Так что есть полностью
Это правильный ответ?
Если нет, то какой подход лучше?
Мы преобразуем ходы в текст. Дано, что во время поиска мы прошли эти узлы
как видно, что красные больше 60, а синие меньше 60.
Путь к узлу 60 включил эти узлы. Таким образом, один из возможных решений этой проблемы является любой другой будет решение содержит только эти шаги. Поскольку за один раз на узле мы можем получить направления в виде S или L при сравнении, и, учитывая, что эти узлы были обнаружены, это означает, что направления были выбраны из этого набора.
Следовательно, общее число возможных решений = все Перестановки этого набора, который задается ответа = вариант А
источник