Я написал следующий класс дерево:Создание дерева в Java
public class Tree {
private TreeNode root;
private static class TreeNode {
private Pair<String, Float> data;
private TreeNode leftNode;
private TreeNode rightNode;
private TreeNode(Pair<String, Float> data, TreeNode left, TreeNode right) {
this.data = data;
this.leftNode = left;
this. rightNode = right;
}
}
}
Следующий вход:
"<Hello, 123>"
"<Hi, 1234>"
"<John, 42142>"
"null"
"<Chris, null>"
"<Peter, null>"
"null"
А теперь я хочу, чтобы написать функцию, которая принимает этот вход как ArrayList
, как это:
ArrayList<Pair<String,Float> input = {"<Hello, 123>", "<Hi, 1234>", "<John, 42142>", "null", "Chris, null", "Peter, null", "null"};
и создает Tree
с использованием описанного выше типа.
ПРИМЕЧАНИЕ: если в каком-либо положении массива значение равно null
, это означает, что там не должно быть узлов.
Вот что я сделал до сих пор:
public createTree(ArrayList<Pair<String, Float>> treeAsVector) {
int nodes = treeAsVector.size();
root = new TreeNode(treeAsVector.get(0), null,null);
for (int i = 1; i < treeAsVector.size(); i++) {
if(treeAsVector.get(i) == null)
i++;//skips the node
else
//not sure what to do here
}
}
мне нужна помощь, потому что я не очень хорошо понимая, как я должен создать дерево, потому что каждый TreeNode
потребуется две дополнительные TreeNode's
, то есть я всегда видеть один шаг впереди ...
UPDATE:
отображение в дерево должно быть сделано в уровнях, как это:
TreeNode
(root)
TreeNode TreeNode
2 3
TreeNode TreeNode
4 5
если значение в ArrayList равно null, оно не отображается.
левый и правый узлы могут быть пустыми, пока у вас их нет. что вам нужно, я думаю, это геттер и сеттер для них. – Leo
@Leo Я написал обновление, чтобы объяснить, как отображение выполняется из ArrayList в дерево. Можете ли вы показать мне, что вы имеете в виду? – queryMaster
ну, похоже, что ваш treenode, вместо того, чтобы держать детей, должен вместо этого сохранить родительское значение – Leo