Мне нужно создать функцию: publi c stati c BinaryTree getFamilyTree (String path). Путь String - это местоположение внутри компьютера
Я использую сканер и средство чтения файлов для чтения этих строк и добавление их с помощью split (,) like, this = {"like", "this"} в массив String и размещение этих строк в качестве данных узла.
public static BinaryTree getFamilyTree(String path) {
File fr = new File(path);
BinaryTree bt = new BinaryTree();
try {
Scanner sc =new Scanner(fr);
while(sc.hasNext())
{
String st = sc.nextLine();
String [] carry = st.split(",");
BTNode [] he = new BTNode [3];
for (int j = 0; j < carry.length; j++) {
he[j] = new BTNode(carry[j]);
}
LinkedList role = new LinkedList();
role.AddFirst(carry[0]);
if(bt.getRoot()==null)
bt.setRoot(he[0]);
if(contains(role, bt)){
if(SearchB(bt.getRoot(), he[0].getData()) != null) {
if(carry.length == 3) {
if (bt.getRoot().getLeft() == null)
{
bt.getRoot().setLeft(new BTNode(carry[2]));
bt.getRoot().getLeft().setParent(bt.getRoot());}
if (bt.getRoot().getRight() == null)
{
bt.getRoot().setRight(new BTNode(carry[2]));
bt.getRoot().getRight().setParent(bt.getRoot());}
}
else if(carry.length == 2)
{
if(bt.getRoot().getLeft() == null) {
bt.getRoot().setLeft(new BTNode(carry[1]));
bt.getRoot().getLeft().setParent(bt.getRoot());}
}
}
}
}} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bt;
}
** файл, например: ** (Parent, LeftChild, RightChild)
- Папа Смурф, Здоровенный Смурф, Ворчливый Смурф
- Ворчливый Смурф, Джокей Смурф, Тщеславие Смурф
- Джокей Смурф, Жадный Smurf, Handy Smurf
- Здоровенный Smurf, Brainy Smurf, Painter Smurf
- Handy Smurf, Farmer Smurf
- Brainy Smurf, Snappy Smurfling, Slouchy Smurfling
Имена не имеют для меня никакого значения, за исключением одной вещи, имена которых стоят первыми в строке, которые относятся к родительскому узлу
Я использую сканер и средство чтения файлов для чтения этих строк и добавления их с помощью split (,) как это в массив String и положить эти строки как данные узла.
У меня проблемы с добавлением узлов туда, куда я хочу. потому что мне нужно найти узел, а затем добавить его детей.
public static BTNode SearchB(BTNode root, String data)
{
if (null == root || null == data) return root;
String rootStr = root.getData();
if (rootStr.compareToIgnoreCase(data) == 0) return root;
BTNode left = SearchB(root.getLeft(), data);
if(null != left) return left;
BTNode right = SearchB(root.getRight(), data);
if (null != right) return right;
return null;
}
Я использую этот код для поиска в BinaryTree для определенных c данных внутри дерева - данные, которые я ищу for - это родительское имя, поэтому я могу добавить его детей в соответствии с файлом
большое спасибо, извините за длинный вопрос:)