java - 在二叉树中,检查给定节点是否为叶节点

标签 java data-structures binary-tree

我已经编写了代码来查找给定节点是否为叶节点,它适用于正例,即当输入的节点是叶节点时,代码遍历该节点,如果它是叶节点node ,给出输出并停止,但是当输入的节点不是叶节点时,负面情况会失败,代码会继续遍历完整的树,即使它已经通过节点并且它不是叶节点。

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; 
}

关于java - 在二叉树中,检查给定节点是否为叶节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249476/

相关文章:

java - 需要将exe文件转换成JAR文件

java - 将 genio 与数组结合使用

c++ - 如何实现一个在一种情况下具有明显不同实现的类?

c - Segmentation Fault 11 用C构建二叉树

java - 无法解码流: java. io.FileNotFoundException :/storage/emulated/0/image. jpg:打开失败:EACCES(权限被拒绝)

c - 简单地创建一个数据结构,它怎么会发生段错误?

java - 以预建字典作为数据结构的压缩算法

ruby - 在ruby中随机选择属性值

algorithm - 范围最小查询基础知识

java - 在 java 中调查带有链表的队列