powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Рекурсия
25 сообщений из 43, страница 1 из 2
Рекурсия
    #39689436
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветвсем) как на месте вопроса написать функцию рекурсии

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
package tree;
 
class Main {
 
    public static void main(String[] args) {
        TreeNode<String> treeRoot = getSet1();
        
        printTree(treeRoot);
        
        /*for (TreeNode<String> node : treeRoot) {
            String indent = createIndent(node.getLevel());
            System.out.println(indent + node.data);
        }*/
    }
 
    public static void printTree(TreeNode<String> tree) {
 
????????????????????????????????????????????????????????? - как здесь написать рекурсию 
        
    }
    
    private static String createIndent(int depth) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < depth; i++) {
            sb.append(' ');
        }
        return sb.toString();
    }
 
    public static TreeNode<String> getSet1() {
        TreeNode<String> root = new TreeNode<>("root");
 
        TreeNode<String> node0 = root.addChild("Video");
        TreeNode<String> node1 = root.addChild("Music");
        TreeNode<String> node2 = root.addChild("Pictures");
 
        TreeNode<String> node00 = node0.addChild("Terminator");
        TreeNode<String> node01 = node0.addChild("Batman");
        TreeNode<String> node02 = node0.addChild("Harry Potter");
        TreeNode<String> node03 = node1.addChild("Kendrick Lamar");
        TreeNode<String> node04 = node1.addChild("Oxxxymiron");
        TreeNode<String> node05 = node1.addChild("Lana Del Rey");
        TreeNode<String> node06 = node2.addChild("Comics");
        TreeNode<String> node07 = node2.addChild("Mona Lisa");
        TreeNode<String> node08 = node2.addChild("Picasso");
        
        
        TreeNode<String> node09 = node08.addChild("Picasso1");
        TreeNode<String> node10 = node08.addChild("Picasso2");
 
        return root;
 
    }
}
...
Рейтинг: 0 / 0
Рекурсия
    #39689734
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что в рекурсии делать-то нужно?
Понятно, что нужно выводить на печать, но ведь тогда надо изменять дерево, а именно удалять елементы, которые мы "распечатали", чтобы при повторном вызове этого же метода у нас всё не зациклилось.
Вот и думайте исходя из задачи.
Нужно проверить если нода имеет чайлд, то взять этот чайлд и проверить его на наличие чайлд, если нет, то напечатать эту ноду и удалить. Далее снова тут же после удаления вызвать printTree с уже измененным методом.
Ну это так, мысли. Не решал подобных задач ранее.
...
Рейтинг: 0 / 0
Рекурсия
    #39689813
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать надо обход дерева в естественном порядке, то есть обход дерева в глубину (иначе у дяди преподавателя не возникло бы желание потребовать применения рекурсии). Обход в глубину - когда после узла указывается сначала непосредственно нижестоящий. Обход в ширину - когда указываются узлы одного уровня, потом более низкого итп. Обход в глубину с помощью онкурсии запрограммировать легче, чем с помощью итерации.
...
Рейтинг: 0 / 0
Рекурсия
    #39689877
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без класса TreeNode<String> здесь делать нечего.

Если это стандартный класс

https://docs.oracle.com/middleware/1212/wls/WLCAR/com/bea/jsptools/tree/TreeNode.html

То там все строится на том, что рекурсия прекращается если метод List getChildren() возращает пустой список.

Удачи в освоении материала
...
Рейтинг: 0 / 0
Рекурсия
    #39689896
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,
как зздесь написать рекурсию пожалуйста помогите
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
package tree;

import tree.Tree.Node;

public class Main {

    public static void main(String[] args) {
        Tree<String> rootFolder = new Tree<>("RootFolder"); // ----------- только она может быть Tree
        Node<String> video = new Node<>("Video", rootFolder.getNode()); //------------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было и от него должны идти ноды
        Node<String> music = new Node<>("Music", rootFolder.getNode()); // ---------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было
        Node<String> picture = new Node<>("Picture", rootFolder.getNode()); // ---------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было
        rootFolder.add(video);
        rootFolder.add(music);
        rootFolder.add(picture);
        Node<String> terminator = new Node<>("Terminator", video);
        Node<String> dieHard = new Node<>("Die Hard", video);
        Node<String> rocky = new Node<>("Rocky", video);
        Node<String> abby = new Node<>("Abba", music);
        video.add(terminator);
        video.add(dieHard);
        video.add(rocky);
        music.add(abby);
        Node<String> homePicture = new Node<>("Home picture", picture);
        Node<String> workPicture = new Node<>("Work picture", picture);
        picture.add(homePicture);
        picture.add(workPicture);

        int foundForNameInDirectory = rootFolder.findByName("Abba").size();
        System.out.println("found for name in directory - " + foundForNameInDirectory);
        // found for name in directory - 1
        System.out.println("root node name - " + rootFolder.findByName("Abba").get(0).getRoot().getData());
        // root node name - RootFolder
    }
}

package tree;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Tree<T> {
    private Node<T> root;

    public Tree(T rootData) {
        root = new Node<T>(rootData, null);
        root.data = rootData;
        root.children = new ArrayList<Node<T>>();
    }

    public static class Node<T> {
        private T data;
        private Node<T> parent;
        private List<Node<T>> children;

        public Node(T data, Node<T> parent) {
            this.data = data;
            this.parent = parent;
            this.children = new ArrayList<Node<T>>();
        }

        public void add(Node<T> node) {
            children.add(node);
        }

        public T getData() {
            return data;
        }

        public List<Node<T>> iterate() {
            return children;
        }

        public Node<T> getRoot() {
            if (parent == null) {
                return null;
            }
            Node<T> localParent = parent;
            while (localParent.parent != null) {
                localParent = parent.parent;
            }
            return localParent;
        }

    }

    public Node<T> getNode() {
        return root;
    }

    public List<Node<T>> iterate() {
        return root.children;
    }

    public boolean remove(Node<T> node) {
        return root.children.remove(node);
    }

    public void add(Node<T> node) {
        root.children.add(node);
    }

    public List<Node<T>> findByName(final String name) {
        final List<Node<T>> result = new ArrayList<>();
        final Queue<Node<T>> allFiles = new LinkedList<>();
        allFiles.add(getNode());
        while (!allFiles.isEmpty()) {
            final Node<T> localEntry = allFiles.poll();
            final List<Node<T>> files = localEntry.iterate();
            for (final Node<T> innerFile : files) {
                if (innerFile.getData().equals(name)) {
                    result.add(innerFile);
                }
                allFiles.add(innerFile);
            }
        }
        return result;
    }
}
...
Рейтинг: 0 / 0
Рекурсия
    #39690054
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,
как зздесь написать рекурсию, пожалуйста, помогите

Настя,

Если Вы нуждаетесь в помощи, то, пожалуйста, сформулируйте, что именно надо сделать. Пока у нас тут два разных куска неработающего кода. Опубликуйте все задание, пожалуйста.

Навскидку если Вам надо распечатать весь каталог фильмов из последнего примера, то код будет выгдядеть примерно так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	private static <T> void printCatalog(Tree<T> rootFolder) {
		
		 printNode(rootFolder.getNode());
		 List<Node<T>> kids = rootFolder.iterate();
		 if (kids.isEmpty()) return;
		 for (Node<T> kid:kids) {
			printNode(kid);
			printCatalog (rootFolder.findByName(kid.data).get(0).getRoot());
		 }
	}

	private static <T> void printNode(Node<T> kid) {
		 System.out.println(kid.getData());
		
	}
...
Рейтинг: 0 / 0
Рекурсия
    #39690061
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем могучим напряжением ума (сходил помыл посуду )

вот работающий код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
package com.tree;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;


public class TreePrint {
	
    public static void main(String[] args) {
        Tree<String> rootFolder = new Tree<>("RootFolder"); // ----------- только она может быть Tree
        Node<String> video = new Node<>("Video", rootFolder.getNode()); //------------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было и от него должны идти ноды
        Node<String> music = new Node<>("Music", rootFolder.getNode()); // ---------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было
        Node<String> picture = new Node<>("Picture", rootFolder.getNode()); // ---------- В вашем коде оно Tree, нужно чтобы было Node, чтобы одно дерево было
        rootFolder.add(video);
        rootFolder.add(music);
        rootFolder.add(picture);
        Node<String> terminator = new Node<>("Terminator", video);
        Node<String> dieHard = new Node<>("Die Hard", video);
        Node<String> rocky = new Node<>("Rocky", video);
        Node<String> abby = new Node<>("Abba", music);
        video.add(terminator);
        video.add(dieHard);
        video.add(rocky);
        music.add(abby);
        Node<String> homePicture = new Node<>("Home picture", picture);
        Node<String> workPicture = new Node<>("Work picture", picture);
        picture.add(homePicture);
        picture.add(workPicture);

        int foundForNameInDirectory = rootFolder.findByName("Abba").size();
        System.out.println("found for name in directory - " + foundForNameInDirectory);
        // found for name in directory - 1
        System.out.println("root node name - " + rootFolder.findByName("Abba").get(0).getRoot().getData());
        // root node name - RootFolder
        
        /**
         * Print catalog
         */
        
        printCatalog(rootFolder);
    }

	private static <T> void printCatalog(Tree<T> rootFolder) {
		
		 printNode(rootFolder.getNode());
		 List<Node<T>> kids = rootFolder.iterate();
		 printKids(kids);

	}

	private static <T> void printKids(List<Node<T>> kids) {
		 if (kids.isEmpty()) return;
		 for (Node<T> kid:kids) {
			printNode(kid);
			printKids(kid.children);
		 }
		
	}

	private static <T> void printNode(Node<T> kid) {
		 System.out.println(kid.getData());
		
	}
}


class Tree<T> {
	    private Node<T> root;

	    public Tree(T rootData) {
	        root = new Node<T>(rootData, null);
	        root.data = rootData;
	        root.children = new ArrayList<Node<T>>();
	    }


	    public Node<T> getNode() {
	        return root;
	    }

	    public List<Node<T>> iterate() {
	        return root.children;
	    }

	    public boolean remove(Node<T> node) {
	        return root.children.remove(node);
	    }

	    public void add(Node<T> node) {
	        root.children.add(node);
	    }

	    public List<Node<T>> findByName(final String name) {
	        final List<Node<T>> result = new ArrayList<>();
	        final Queue<Node<T>> allFiles = new LinkedList<>();
	        allFiles.add(getNode());
	        while (!allFiles.isEmpty()) {
	            final Node<T> localEntry = allFiles.poll();
	            final List<Node<T>> files = localEntry.iterate();
	            for (final Node<T> innerFile : files) {
	                if (innerFile.getData().equals(name)) {
	                    result.add(innerFile);
	                }
	                allFiles.add(innerFile);
	            }
	        }
	        return result;
	    }
	}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
package com.tree;

import java.util.ArrayList;
import java.util.List;

public class Node<T> {

        T data;
        Node<T> parent;
        List<Node<T>> children;

        public Node(T data, Node<T> parent) {
            this.data = data;
            this.parent = parent;
            this.children = new ArrayList<Node<T>>();
        }

 		public void add(Node<T> node) {
            children.add(node);
        }

        public T getData() {
            return data;
        }

        public List<Node<T>> iterate() {
            return children;
        }

        public Node<T> getRoot() {
            if (parent == null) {
                return null;
            }
            Node<T> localParent = parent;
            while (localParent.parent != null) {
                localParent = parent.parent;
            }
            return localParent;
        }

    }



Печатает так

RootFolder
Video
Terminator
Die Hard
Rocky
Music
Abba
Picture
Home picture
Work picture
...
Рейтинг: 0 / 0
Рекурсия
    #39690081
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чтоб уж совсем не было стремно, напечатаем дерево с отступлениями, чтоб было понятно уровни вложения

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	private static <T> void printCatalog(Tree<T> rootFolder) {
		
		 printNode(rootFolder.getNode(), "");
		 List<Node<T>> kids = rootFolder.iterate();
		 printKids(kids, " ");

	}

	private static <T> void printKids(List<Node<T>> kids, String space) {
		if (!kids.isEmpty()) {
			for (Node<T> kid : kids) {
				printNode(kid, space);
				printKids(kid.children, space + " ");
			}
		}
	}

	private static <T> void printNode(Node<T> kid, String space) {
		 System.out.println(space+kid.getData());
		
	}
}



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
RootFolder
 Video
  Terminator
  Die Hard
  Rocky
 Music
  Abba
 Picture
  Home picture
  Work picture
...
Рейтинг: 0 / 0
Рекурсия
    #39690139
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Благодарю вас спасибо большое!!!!!!!
...
Рейтинг: 0 / 0
Рекурсия
    #39690140
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Можно спросить а где находится рекурсия в вашем коде?
...
Рейтинг: 0 / 0
Рекурсия
    #39690141
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,

Можно спросить а где находится рекурсия в вашем коде?

Настя,

я давно не видел такого тонкого стеба Вы просто сделали мой день

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	private static <T> void printKids(List<Node<T>> kids, String space) {
		if (!kids.isEmpty()) {
			for (Node<T> kid : kids) {
				printNode(kid, space);
				printKids(kid.children, space + " ");
			}
		}
	}



В данном учатске кода метод printKids вызывает сам себя в виде printKids(kid.children, space + " "); , что на языке математической логики называется рекурсивный вызов.

Спасибо было очень приятно Вам помочь. Не стесняйтесь публикуйте еще задания.
...
Рейтинг: 0 / 0
Рекурсия
    #39690142
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

простите просто я только 3 неделю учусь JAVA( если буду тупить простите))))
...
Рейтинг: 0 / 0
Рекурсия
    #39690143
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Спасибо вам большееее ценю вашу помощь)
...
Рейтинг: 0 / 0
Рекурсия
    #39690148
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,

простите просто я только 3 неделю учусь JAVA( если буду тупить простите))))

Для трех недель Вы реально хорошо продвинулись. К слову сказать неплохо учат где если не секрет?
...
Рейтинг: 0 / 0
Рекурсия
    #39690155
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

я хожу на курсы, правда я единственная девушка в группе(
и пацаны толком не помогают если что то не знаю. Каждый сам за себя. Вот я чтобы что то понять листаю книги, шарюсь в интернете и на форумах.
...
Рейтинг: 0 / 0
Рекурсия
    #39690156
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nastyaa,

Мне сказали чтобы в классе реализации были спрятаны, и чтобы только класс Tree мог ссылаться на класс Node (только в классе Нод должны быть все функции) и плюс надо добавить getChilder и getParent и addChild чтобы возвращались. Можете помочь я просто запуталась и голова кругом((

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package treeadil;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;


public class TreePrint {
	
    public static void main(String[] args) {
        Tree<String> rootFolder = new Tree<>("RootFolder"); 
        Node<String> video = new Node<>("Video", rootFolder.getNode()); 
        Node<String> music = new Node<>("Music", rootFolder.getNode()); 
        Node<String> picture = new Node<>("Picture", rootFolder.getNode());
        rootFolder.add(video);
        rootFolder.add(music);
        rootFolder.add(picture);
        Node<String> terminator = new Node<>("Terminator", video);
        Node<String> dieHard = new Node<>("Die Hard", video);
        Node<String> rocky = new Node<>("Rocky", video);
        Node<String> abby = new Node<>("Abba", music);
        video.add(terminator);
        video.add(dieHard);
        video.add(rocky);
        music.add(abby);
        Node<String> homePicture = new Node<>("Home picture", picture);
        Node<String> workPicture = new Node<>("Work picture", picture);
        picture.add(homePicture);
        picture.add(workPicture);

        int foundForNameInDirectory = rootFolder.findByName("Abba").size();
        System.out.println("found for name in directory - " + foundForNameInDirectory);
        
        System.out.println("root node name - " + rootFolder.findByName("Abba").get(0).getRoot().getData());
        
        
       
        printCatalog(rootFolder);
    }

	private static <T> void printCatalog(Tree<T> rootFolder) {
		
		 printNode(rootFolder.getNode());
		 List<Node<T>> kids = rootFolder.iterate();
		 printKids(kids);

	}

	private static <T> void printKids(List<Node<T>> kids) {
		 if (kids.isEmpty()) return;
		 for (Node<T> kid:kids) {
			printNode(kid);
			printKids(kid.children);
		 }
		
	}

	private static <T> void printNode(Node<T> kid) {
		 System.out.println(kid.getData());
		
	}
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package treeadil;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

class Tree<T> {
	    private Node<T> root;

	    public Tree(T rootData) {
	        root = new Node<>(rootData, null);
	        root.data = rootData;
	        root.children = new ArrayList<Node<T>>();
	    }


	    public Node<T> getNode() {
	        return root;
	    }

	    public List<Node<T>> iterate() {
	        return root.getChildren();
	    }

	    public boolean remove(Node<T> node) {
	        return root.children.remove(node);
	    }

	    public void add(Node<T> node) {
	        root.children.add(node);
	    }

	    public List<Node<T>> findByName(final String name) {
	        final List<Node<T>> result = new ArrayList<>();
	        final Queue<Node<T>> allFiles = new LinkedList<>();
	        allFiles.add(getNode());
	        while (!allFiles.isEmpty()) {
	            final Node<T> localEntry = allFiles.poll();
	            final List<Node<T>> files = localEntry.iterate();
	            for (final Node<T> innerFile : files) {
	                if (innerFile.getData().equals(name)) {
	                    result.add(innerFile);
	                }
	                allFiles.add(innerFile);
	            }
	        }
	        return result;
	    }
	}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package treeadil;

import java.util.ArrayList;
import java.util.List;

public class Node<T> {

    private T data;
    private Node<T> parent;
    private List<Node<T>> children;

    public Node(T data, Node<T> parent) {
        this.data = data;
        this.parent = parent;
        this.children = new ArrayList<>();
    }

    public void add(Node<T> node) {
        children.add(node);
    }

    public T getData() {
        return data;
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    
    public List<Node<T>> iterate() {
        return children;
    }

    public Node<T> getRoot() {
        if (parent == null) {
            return null;
        }
        Node<T> localParent = parent;
        while (localParent.parent != null) {
            localParent = parent.parent;
        }
        return localParent;
    }

}
...
Рейтинг: 0 / 0
Рекурсия
    #39690158
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,
я хожу на курсы, правда я единственная девушка в группе(
и пацаны толком не помогают если что то не знаю. Каждый сам за себя. Вот я чтобы что то понять листаю книги, шарюсь в интернете и на форумах.
Так практически во всех компаниях)) По крайней мере в первый 1-2 месяца. Так что готовьтесь к этому, когда устроитесь на работу.
У нас, к примеру, есть всего 2-3 человека из 40-ка, кто может помочь с чем-то, с чем еще не работал, это очень грустно, особенно в самом начале работы. Никто не хочет тратить своё время на новичков, когда они начинают тупить))
Но есть отличные люди, которые не, поправляя на голове корону, отвечают общими фразами, а реально объясняют, что именно прочитать, чтобы решить вопрос и понять как именно должно работать. Ну и плюс, можно решить через руководство, объяснив ситуацию, почему не можешь закрыть задачу, попросить через руководителя выделить время человека опытнее в помошь.
Но это только по началу, потом всё становится стандартным и решаемым.
А про учебу, думаю, что через какое-то время выделиться/создасться у вас небольшая компашка и будете совместно решать задачи. Видимо у вас(да и не только у вас) большинство молодых парней стесняются девушек))
...
Рейтинг: 0 / 0
Рекурсия
    #39690161
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic,

Они даже друг другу не помогают, каждый сам за себя(
пытаюсь всех как то соединить не получается
...
Рейтинг: 0 / 0
Рекурсия
    #39690169
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaa,

Вот посмотрите как реализован классический Node на стек оверфло

https://stackoverflow.com/questions/19330731/tree-implementation-in-java-root-parents-and-children

Это походу, что из Вас инструктор вымучивает

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
import java.util.ArrayList;
import java.util.List;

public class Node<T> {
    private List<Node<T>> children = new ArrayList<Node<T>>();
    private Node<T> parent = null;
    private T data = null;

    public Node(T data) {
        this.data = data;
    }

    public Node(T data, Node<T> parent) {
        this.data = data;
        this.parent = parent;
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public void setParent(Node<T> parent) {
        parent.addChild(this);
        this.parent = parent;
    }

    public void addChild(T data) {
        Node<T> child = new Node<T>(data);
        child.setParent(this);
        this.children.add(child);
    }

    public void addChild(Node<T> child) {
        child.setParent(this);
        this.children.add(child);
    }

    public T getData() {
        return this.data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public boolean isRoot() {
        return (this.parent == null);
    }

    public boolean isLeaf() {
        return this.children.size == 0;
    }

    public void removeParent() {
        this.parent = null;
    }
}
...
Рейтинг: 0 / 0
Рекурсия
    #39690173
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

этот код будет работать? в моем случае?
...
Рейтинг: 0 / 0
Рекурсия
    #39690185
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,

этот код будет работать? в моем случае?

Сложно сказать какой у Вас случай так как я не вижу задания. И к сожалению свой crustal ball я забыл на работе, чтоб точно предсказать подойдет этот класс Вам или не подойдет

На самом деле Вам надо будет сделать рефакторинг если там, что не так. А так посмотрите какие методы инструктор от Вас хочет и возьмите их из этого класса и положите в свой.

Поймите правильно инструктор тоже человек и вмеру ленив как мы все. Вы в этом плане не исключение так, что скорее всего инструктор так же ндыбал это задание на том же стековерфло и Ваша задача проявить некие навыки в духе Окей Гугл и найти правильный код....

Удачи.
...
Рейтинг: 0 / 0
Рекурсия
    #39690186
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Он сказал что ваш код переделать, просто чтобы все функции были только в Node. А класс Tree лишь ссылался на Node. и плюс getchild и getparetn и addchild были все( можете пожалуйста помочь вы моя последняя надежда)
...
Рейтинг: 0 / 0
Рекурсия
    #39690197
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastyaaSergunka,

Он сказал что ваш код переделать, просто чтобы все функции были только в Node. А класс Tree лишь ссылался на Node. и плюс getchild и getparetn и addchild были все( можете пожалуйста помочь вы моя последняя надежда)

Настя,

У нас в Калифорнии уже глубокая ночь. Завтра если мне на работе повезет и я сделаю быстро, что запланировал, то напишу Вам код. Но лучше будет если Вы всеж сама смекнете как там чего делать надо, там ничего особенного нет тем более образец из стек оверфло у Вас под рукой.
...
Рейтинг: 0 / 0
Рекурсия
    #39690204
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Ок спасибо) буду ждать но а пока сама попробую сделать)
...
Рейтинг: 0 / 0
Рекурсия
    #39690308
shaden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nastyaa,
Проблема в том, что Вы не учитесь.
Вы просите других выполнить за Вас задачу. И толку от таких курсов будет около нуля.
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Рекурсия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]