【发布时间】:2018-02-19 07:17:12
【问题描述】:
我使用模板创建了一个二叉树。我为所有节点输入了整数值,我想在二叉树中找到最大元素。
这里是实现:
public class BinaryTreeNode<T> {
private T data;
BinaryTreeNode right;
BinaryTreeNode left;
public BinaryTreeNode(T data) {
this.data = data;
this.right = null;
this.left = null;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public BinaryTreeNode getRight() {
return right;
}
public void setRight(BinaryTreeNode right) {
this.right = right;
}
public BinaryTreeNode getLeft() {
return left;
}
public void setLeft(BinaryTreeNode left) {
this.left = left;
}
public int findMax(BinaryTreeNode root){
int max= 0;
if(root==null){
return 0;
} else {
int left= findMax(root.left);
int right= findMax(root.right);
max= Math.max(left,right);
if(max> root.getData()){
max= root.getData();
}
return max;
}
}
}
我收到以下错误:
不兼容的类型:找到 java.lang.Object 所需的 int。
我在修改后的版本中写了这个:
int data= Integer.valueOf((String)root.getData());
有没有更好的方法?
【问题讨论】:
-
我不知道您创建二叉树的规则是什么,但通常使用“二叉搜索树”,其中节点按某种标准排序。在每个节点上,较小的节点位于左子树中,较大的节点位于右侧。要找到最大值,您只需向右走,直到没有正确的孩子。
-
@Henry 这个问题没有说明二叉搜索树,所以我假设它是一个任意(未排序的)二叉树。
-
@Eran 是的,但是因为仅仅为了它而拥有一棵二叉树没有多大意义,我想知道这是否真的是有意的。
标签: java tree max binary-tree element