Докажите, что преемник Y узла X, если у X нет правого потомка, является младшим предком узла X.

Я изучаю CS в университете, и у меня есть вопрос, который я не могу доказать.

Докажите, что преемник Y узла X в BST, когда X не имеет правого потомка, является младшим предком X, то есть левый потомок также является предком X.

Мне нужно рассмотреть все случаи, включая лист, кроме самого правого, потому что у него нет преемника.

Можете ли вы, ребята, дать мне несколько советов, с чего начать?


person Almog Talker    schedule 20.04.2016    source источник
comment
Начните с рисования изображений деревьев, а затем последовательно обходите их. Вы должны найти шаблон достаточно быстро.   -  person Jim Mischel    schedule 20.04.2016
comment
Я понимаю, что это правда, но я не могу понять, как это доказать.   -  person Almog Talker    schedule 21.04.2016


Ответы (1)


Неупорядоченный обход узла BST посещает левое поддерево, сам узел, а затем правое поддерево.

Итак, если X (у которого нет правого дочернего элемента) является левым дочерним элементом своего родителя, то мы знаем, что его преемник является родителем. Это следует из определения неупорядоченного обхода.

Если X является правым дочерним элементом своего родителя, то родитель предшествует ему в обходе (хотя он не является непосредственным предшественником, если только X не имеет левого поддерева). Это тоже следует из определения неупорядоченного обхода. Преемник X, поскольку у него нет правого поддерева, должен находиться над ним в дереве. Преемник не может быть родителем, поэтому он должен быть тем, кем был бы преемник родителя, если бы X не существовало.

person Jim Mischel    schedule 21.04.2016
comment
Хорошо, но, на мой взгляд, это не отвечает на вопрос, а если и отвечает, то заставляет думать рекурсивно... - person nbro; 04.09.2016
comment
Многие доказательства выполняются рекурсивно. Объясните, почему это не отвечает на вопрос. - person Jim Mischel; 04.09.2016
comment
Во-первых, вам нужно иметь четкое представление об обходе по порядку, что не всегда так. Более того, обход по порядку мало что интуитивно говорит о преемнике, ИМХО. Итак, да, как я уже сказал в предыдущем комментарии, это может ответить на вопрос, но это рекурсивное объяснение. Действительно, прочитав еще несколько раз, я пришел к выводу, что это действительно отвечает на вопрос (рекурсивное понимание). Нарушение принципа непротиворечивости позволяет мне в конце концов оправдаться :D - person nbro; 04.09.2016
comment
Кстати, я уже проголосовал за ваш ответ еще до комментирования;) - person nbro; 04.09.2016