Nếu bạn đang thực hiện mã hóa bảng trắng, một cuộc phỏng vấn hoặc thậm chí chỉ dự định sử dụng một cái cây, thì tính dài dòng của những thứ này là rất ít.
Cần phải nói thêm rằng lý do một cây không có trong đó như, nói, một Pair (về điều tương tự có thể được nói), là vì bạn nên gói gọn dữ liệu của mình trong lớp bằng cách sử dụng nó, và thực hiện đơn giản nhất như:
/*** /* Within the class that's using a binary tree for any reason. You could /* generalize with generics IFF the parent class needs different value types. */ private class Node { public String value; }Đó thực sự là một cây chiều rộng tùy ý.
Nếu bạn muốn một cây nhị phân, nó thường dễ sử dụng hơn với các trường được đặt tên:
private class Node { String value; Node left; Node right; }Hoặc nếu bạn muốn có một bộ ba:
private class Node { String value; }Bây giờ bạn nói bạn muốn
để có thể nhận được tất cả các phần tử con (một số loại danh sách hoặc mảng của Chuỗi) được cung cấp một chuỗi đầu vào đại diện cho một nút đã cho
Nghe có vẻ như bài tập về nhà của bạn.[.__.] Nhưng vì tôi chắc chắn rằng bất kỳ thời hạn nào đã trôi qua
import Java.util.Arrays; import Java.util.ArrayList; import Java.util.List; public class kidsOfMatchTheseDays { static private class Node { String value; Node[] nodes; } } Node node, String find, boolean add) { if (node == null) { return list; } if (node.value.equals(find)) { add = true; } if (add) { list.add(node.value); } if (node.nodes != null) { for (Node child: node.nodes) { list(child, find, list, add); } } return list; } public static final void main(String... args) { Node tree = new Node(); tree.value = "root"; Node[] n = {new Node(), new Node()}; tree.nodes = n; tree.nodes[0].value = "leftish"; tree.nodes[1].value = "rightish-leafy"; Node[] nn = {new Node()}; tree.nodes[0].nodes = nn; tree.nodes[0].nodes[0].value = "off-leftish-leaf"; System.out.println(Arrays.toString(list(tree, args[0]).toArray())); } }Điều này giúp bạn sử dụng như:
$ Java kidsOfMatchTheseDays leftish [leftish, off-leftish-leaf] $ Java kidsOfMatchTheseDays root [root, leftish, off-leftish-leaf, rightish-leafy] $ Java kidsOfMatchTheseDays rightish-leafy [rightish-leafy] $ Java kidsOfMatchTheseDays a []