如何在java的二叉树中找到一个节点是否存在?
how to find an node exist or not in binary tree in java?
我试过了,但出现编译时错误。我缺少什么?如果找不到元素,我也必须 return false
public boolean search(Node root, Node node){
if(root==node){
return true;
}
if(root.getLeft()!=null){
search(root.getLeft(), node);
}
if(root.getRight()!=null){
search(root.getRight(), node);
}
}
你有一个编译错误,因为你并不总是return一些东西:
if(root.getLeft()!=null){
search(root.getLeft(), node);
}
if(root.getRight()!=null){
search(root.getRight(), node);
}
这会修复编译错误,但不会修复算法:
if(root.getLeft()!=null){
return search(root.getLeft(), node);
}
if(root.getRight()!=null){
return search(root.getRight(), node);
}
这应该修正算法:
if(root.getLeft()!=null && search(root.getLeft(), node)) {
return true;
}
if(root.getRight()!=null && search(root.getRight(), node)){
return true;
}
return false;
public boolean search(Node root, Node node){
if(root == node){
return true;
}
boolean found = false;
if(root.getLeft() != null ){
found = search(root.getLeft(), node);
}
if(!found && root.getRight() != null )
{
found = search(root.getRight(), node);
}
return found;
}
我试过了,但出现编译时错误。我缺少什么?如果找不到元素,我也必须 return false
public boolean search(Node root, Node node){
if(root==node){
return true;
}
if(root.getLeft()!=null){
search(root.getLeft(), node);
}
if(root.getRight()!=null){
search(root.getRight(), node);
}
}
你有一个编译错误,因为你并不总是return一些东西:
if(root.getLeft()!=null){
search(root.getLeft(), node);
}
if(root.getRight()!=null){
search(root.getRight(), node);
}
这会修复编译错误,但不会修复算法:
if(root.getLeft()!=null){
return search(root.getLeft(), node);
}
if(root.getRight()!=null){
return search(root.getRight(), node);
}
这应该修正算法:
if(root.getLeft()!=null && search(root.getLeft(), node)) {
return true;
}
if(root.getRight()!=null && search(root.getRight(), node)){
return true;
}
return false;
public boolean search(Node root, Node node){
if(root == node){
return true;
}
boolean found = false;
if(root.getLeft() != null ){
found = search(root.getLeft(), node);
}
if(!found && root.getRight() != null )
{
found = search(root.getRight(), node);
}
return found;
}