Надеюсь, это будет простой вопрос.Я пытаюсь найти уровень заданного уникального числа в двоичном дереве.Мое двоичное дерево таково, что
[1,2,3,null,4,null,5]
Я пытаюсь проверить, равны ли высоты двух узлов, в данном случае 4 и 5. Я реализовал решение следующим образом.
public int findNodeHeight(TreeNode root, int nodeValue, int height){
//if end of tree, exit loop
if(root == null){
return -1;
}
//if we found the value, return height
if(root.val == nodeValue){
return height;
}
//check the left
int left = findNodeHeight(root.left,nodeValue,height++);
if(left!=-1){
return left;
}
//check the right
int right = findNodeHeight(root.right,nodeValue,height++);
if(right!=-1){
return right;
}
return -1;
}
Однако это не работает, и он возвращает высоту 2 для 5 (что правильно) и высоту 1 для 4 (что неверно).Однако, если я изменю оператор ++ на
height+1
следующим образом:
public int findNodeHeight(TreeNode root, int nodeValue, int height){
if(root == null){
return -1;
}
if(root.val == nodeValue){
return height;
}
//check the left
int left = findNodeHeight(root.left,nodeValue,height+1);
if(left!=-1){
return left;
}
//check the right
int right = findNodeHeight(root.right,nodeValue,height+1);
if(right!=-1){
return right;
}
return -1;
}
Решение теперь работает.Почему неправильно использовать оператор ++ в вызове метода?
Спасибо!