Я пытаюсь найти способ, которым я мог бы взять двоичный древовидный класс и пройти через его узлы,
, выполняя X количество встроенных действий на каждом узле, не переписывая один и тот же код обхода снова и снова.
я бы себе, если Java разрешено указатели на функции, это было бы намного проще для меня, чтобы выяснить ...
Обобщение действий для обхода двоичного дерева?
В принципе, то, что мне нужно что-то вроде следующего:
public class BinaryTreeNode {
//...
public void inOrderTraversalFrom(BinaryTreeNode node, /* ??? */ actions) {
if(node.left != null)
inOrderTraversalFrom(node.left);
/* do something with "actions" here */
if(node.right != null)
inOrderTraversalFrom(node.right);
}
}
... где действия могут допускать выполнение различных методов, , принимая различные параметры в зависимости от типа действия (действий), которое должно выполняться на каждом узле.
Хорошим примером этого может быть класс, предназначенный для рисования этих узлов, который может быть передан, принимая объект Graphics как один из его параметров, по сравнению с классом, который предназначен для выполнения ряда других действий, t требуется объект Graphics в качестве параметра, а вместо него - совершенно другой набор параметров.
Как это возможно? Каким будет наиболее динамичный способ выполнения этого?
http://stackoverflow.com/questions/122407/whats-the-nearest-substitute-for-a-function- pointer-in-java –
@MitchWheat очень интересно, мне придется использовать это когда-нибудь ... но он все еще не решает проблему перезаписи того же метода inOrderTraversalFrom' d принимать разные интерфейсы. Возможно, использование дженериков может быть каким-то образом объединено здесь? – RectangleEquals