[英]How to find a Node of a Binary Search Tree without using a recursive method
[英]How to find a node in a binary tree using an attribute of the object
我有一个通用的二叉树。 我要做的是找到一个节点,提供一个属性以找到该节点然后返回它。 例如,我的树具有对象类型X,X具有属性代码,因此我必须将当前节点的代码与提供的代码进行比较。
private X find_X_by_code(Node<X> node, String code) {
if (!node.element.code().equals(code)){
if (node.left != null){
find_X_by_code(node.left,code);
}
if (node.right != null){
find_X_by_code(node.right,code);
}
}
return node.element;
}
我这样称呼这个方法:
find_X_by_code(root,code);
由于某种原因,当代码匹配时,它会继续进行。
您可能需要根据自己的使用进行一些调整。
if(node != null){
if(node.element.code().equals(code)){
return node.element;
} else {
Node tempNode = find_X_by_code(node.left, code);
if(tempNode == null) {
tempNode = find_X_by_code(node.right, code);
}
return tempNode.element;
}
} else {
return null;
}
您缺少递归调用中的返回值以及该节点不存在(到达null)的情况的句柄。 更改为:
private X find_X_by_code(Node<X> node, String code) {
if (node == null) { return null; }
if (!node.element.code().equals(code)){
if (node.left != null){
return find_X_by_code(node.left,code);
}
if (node.right != null){
return find_X_by_code(node.right,code);
}
}
return node.element;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.