我已经编写了代码来查找给定节点是否为叶节点,对于正向情况,即输入节点是叶节点时,代码可以遍历到节点并输出结果停止执行,但负向情况下,当输入节点不是叶节点时,代码会继续遍历整个树,即使它已经通过该节点并确定它不是叶节点。
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));
}
任何人能告诉我,如果找到节点并且它不是叶节点,停止递归的条件是什么。
谢谢。
return false;
,这样整个函数都会返回false,即使找到了叶节点。使用当前的代码,它将无法编译,因为没有最终的返回语句。 - rohit gargisLeaf(BTNode node,int data)
中添加节点值参数并在末尾返回false以及while
返回true时的node.data == data
条件,代码仍会遍历其他节点,即使它已经定位到叶节点。我通过所有这些更改运行了代码,但它并没有提供所需的答案。该代码适用于查找所有叶节点,但无法检查给定的节点是否为叶节点。 - rohit garg