以下是我的简化图表实现
import java.util.ArrayList; import java.util.List; public class TreeNode<E extends Comparable<E>> { private E data; private List<TreeNode<E>> children; public TreeNode(E value) { data = value; children = new ArrayList<>(); } public E getData() { return data; } public void setData(E data) { this.data = data; } public List<TreeNode<E>> getChildren() { return children; } public void setChildren(List<TreeNode<E>> children) { this.children = children; } }
我正在编写代码来查找有向图中是否连接了2个节点.我收到编译错误
public static boolean findIfPathExists(TreeNode<? extends Comparable<?>> start,TreeNode<? extends Comparable<?>> end) { Set<TreeNode<? extends Comparable<?>>> visitedNodes = new HashSet<TreeNode<? extends Comparable<?>>>(); return findIfPathExists(start,end,visitedNodes); } private static boolean findIfPathExists(TreeNode<? extends Comparable<?>> start,TreeNode<? extends Comparable<?>> end,Set<TreeNode<? extends Comparable<?>>> visitedNodes) { if(start == end) return true; visitedNodes.add(start); List<TreeNode<? extends Comparable<?>>> children = start.getChildren(); for (TreeNode<? extends Comparable<?>> child : children) { if(visitedNodes.contains(child)) continue; if(findIfPathExists(child,visitedNodes)) return true; } return false; }
我在行start.getchildren收到错误
Type mismatch: cannot convert from List<TreeNode<capture #11 -of? extends Comparable<?>>> to List<TreeNode<? extends Comparable<?>>>