Чтобы проверить, является ли это полное двоичное дерево или полностью двоичное дерево, или ни один из двух

Я новичок в концепции бинарных деревьев. Я застрял в вопросе в течение многих дней. Он должен определить, является ли данное дерево двоичным деревом или полностью двоичным деревом, или ни одно из двух.

Я думал о многих алгоритмах, но ни один из них не соответствует каждому случаю. Я попробовал Google, но не было правильного решения.

Я думал об использовании техники обхода уровня порядка, но не мог придумать, как узнать их уровни после того, как все узлы были вставлены в очередь.

Для полностью двоичного дерева я попытался подсчитать, равны ли степени всех узлов 0 или 2, но затем, если у дерева есть какой-то промежуточный узел со степенью, эта логика также неверна.

Я сделал дерево, используя связанный список, Основной способ - Левый ребенок, Правый дочерний путь.

Для полностью бинарного дерева я делаю обход inorder и проверяю степень, если 0 или 2, но это неправильно, потому что если есть узел на каком-то более раннем уровне со степенью 0, то и тогда вывод сбывается.

Для полного двоичного дерева я не мог придумать ничего правильного.

Благодарю вас.

И я использую C ++, поэтому, если логика использует указатели, тогда все в порядке.

Ответы на вопрос(5)

Ваш ответ на вопрос