如何在java二叉树中实现泛型顺序遍历?
如何为我的二叉树类创建顺序遍历。我已经看过并尝试过其他的例子,但似乎找不到对我有用的东西 以下是迄今为止我对顺序遍历方法的了解:如何在java二叉树中实现泛型顺序遍历?,java,binary-tree,binary-search-tree,Java,Binary Tree,Binary Search Tree,如何为我的二叉树类创建顺序遍历。我已经看过并尝试过其他的例子,但似乎找不到对我有用的东西 以下是迄今为止我对顺序遍历方法的了解: public void inOrder(TreeNode<T> root) { if(root != null) { inOrder(root.left()); //Visit the node by Printing the node data System.out.printf("%d ",
public void inOrder(TreeNode<T> root) {
if(root != null) {
inOrder(root.left());
//Visit the node by Printing the node data
System.out.printf("%d ",root.value());
inOrder(root.right());
}
}
public static void main(String[] args) {
BinaryTree<Integer> tree = new BinaryTree<Integer>();
tree.insert(1);
tree.insert(2);
tree.insert(3);
tree.insert(4);
tree.insert(5);
inOrder(tree.root);
}
但我似乎在说BinaryTree类型中的inOrderTreeNode方法不适用于参数BTree时出错了
以下是我的课程:
二叉树类
三烯类
二叉树接口
您的问题是,在对inOrder函数的递归调用中,您传入的是BTree对象,而不是预期的TreeNode对象:
public void inOrder(TreeNode<T> root) {
if(root != null) {
inOrder(root.left()); //Passing in a BTree<T> object instead of TreeNode<T>
System.out.printf("%d ",root.value());
inOrder(root.right()); //Passing in a BTree<T> object instead of TreeNode<T>
}
}
您应该决定将存储在TreeNode对象中的左/右值也作为类型TreeNode使用,或者将访问左/右值的结果强制转换到inOrder函数中的TreeNode对象。那么到底是什么问题呢?我需要创建一个方法,以便遍历树。我所尝试的似乎不起作用。错误消息是类型BinaryTree中的inOrderTreeNode方法不适用于参数BTree。。。请仔细阅读本文,并检查inoder方法的签名以及您试图作为参数传递的内容。
public class TreeNode<T extends Comparable<? super T>> {
T value;
BTree<T> left, right;
public TreeNode(T value) {
this.value = value;
left = new BinaryTree<T>();
right = new BinaryTree<T>();
}
public T value() {
return value;
}
public BTree<T> left() {
return left;
}
public BTree<T> right() {
return right;
}
}
public interface BTree<T extends Comparable<? super T>> {
public void insert(T value);
public T value();
public BTree<T> left();
public BTree<T> right();
}
public void inOrder(TreeNode<T> root) {
if(root != null) {
inOrder(root.left()); //Passing in a BTree<T> object instead of TreeNode<T>
System.out.printf("%d ",root.value());
inOrder(root.right()); //Passing in a BTree<T> object instead of TreeNode<T>
}
}