在二叉树中,检查给定节点是否为叶节点
in Binary Tree ,checking if given node is leaf node or not
我已经编写了代码来查找给定节点是否为叶节点,它适用于肯定的情况,即当输入的节点是叶节点时,代码遍历该节点,如果它
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 (isLeaf(node.left, data) || isLeaf(node.right, data));
。那应该很可能是 return false
尝试这样的事情:
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;
}
bool isleaf(Node* root)
{
if(root->left==NULL && root->right==NULL) return true;
else return false;
}
我已经编写了代码来查找给定节点是否为叶节点,它适用于肯定的情况,即当输入的节点是叶节点时,代码遍历该节点,如果它
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 (isLeaf(node.left, data) || isLeaf(node.right, data));
。那应该很可能是 return false
尝试这样的事情:
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;
}
bool isleaf(Node* root)
{
if(root->left==NULL && root->right==NULL) return true;
else return false;
}