Прямо сейчас я пытаюсь написать двоичную кучу в Java, реализованную по двоичной древовидной структуре, и хотя у меня есть очень хорошее представление о том, как " heapify "дерево после добавления элемента, логика поиска первого незанятого листа в нижней части кучи ускользает от меня.Добавление элемента в первый незанятый лист в двоичном дереве
Я знаю, что поиск первого незанятого листа, как предполагается, является обходным путем, но я все еще не могу понять, как будет работать алгоритм обхода ширины в первом порядке.
Спасибо! Хотя я немного смущен. Поскольку вы добавляете новый узел во временную переменную, означает ли это, что он не будет добавлен в исходное дерево? – user2309750
Он будет добавлен к исходному дереву, потому что temp - это копия ссылки, указывающей на узел дерева. Например, «Node temp = root; temp.left = new Node (obj) 'эквивалентно' root.left = new Node (obj) '; 'Node temp = root; temp = temp.left; temp.right = new Node (obj) 'эквивалентно' root.left.right = new Node (obj) ' –