我已经编写了代码,以查找给定的节点是否为叶节点,对于肯定的情况,它可以正常工作,即当输入的节点为叶节点时,代码遍历直到该节点,如果是叶节点,则给出输出并停止,但是当输入的节点不是叶节点时,否定方案将失败。即使树已经通过该节点并且不是叶节点,代码仍会遍历整个树。
boolean isLeaf(BTNode node, int data) {
if (node == null) {
return false;
}
System.out.println("Node traversed :"+ node.data);
if (node.left == null && node.right == null && node.data == data) {
System.out.println("Node : " + node.data + " is leaf node");
return true;
}
return (isLeaf(node.left, data) || isLeaf(node.right, data));
}
如果找到了节点并且它不是叶节点,任何人都可以说出停止递归的条件是什么。
谢谢。
尝试这样的事情:
boolean isLeaf(BTNode node, int data) {
if (node == null)
return false;
if (node.left == null && node.right == null)
return true;
isLeaf(node.left);
isLeaf(node.right);
}
实现它的方式的主要问题是:
return (isLeaf(node.left, data) || isLeaf(node.right, data));
您是否想到实际执行时会发生什么?
编辑:如果您只想检查节点是否为叶,请执行以下操作:
boolean isLeaf(BTNode node, int data) {
if (node == null)
return false;
if (node.right == null && node.left == null)
return true;
return false;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句