if(a == true && b == null);改为if(a == false || b == true);为什么不相等吗
时间: 2023-11-24 22:45:58 浏览: 44
这两个条件表达式是不等价的,因为逻辑运算符的优先级不同。在第一个条件中,"==" 运算符的优先级高于 "&&" 运算符,所以先比较 a 是否为 true,然后再判断 b 是否为 null。而在第二个条件中,"==" 运算符的优先级高于 "||" 运算符,所以先比较 a 是否为 false,然后再判断 b 是否为 true。
如果 a 的值为 true,那么第一个条件为 true,而第二个条件为 false。这是因为第一个条件只有当 a 为 true 且 b 为 null 时才为 true,而第二个条件只要 a 不为 false 或者 b 为 true 即可为 true。所以这两个条件在 a 为 true 时结果不相等。
相关问题
var isSymmetric = function(root) { if(root === null || (root.left === null && root.right === null)) return true const f = (A, B)=>{ if(A === null && B === null) return true if(A === null || B === null) return false if(A.val !== B.val) return false return f(A.left, B.right)&&(A.right, B.left) } return f(root.left, root.right) };当输入[2,3,3,4,5,null,4]有什么问题
在给定的代码中,存在一个错误的逻辑运算符。在 `return f(A.left, B.right)&&(A.right, B.left)` 这一行中,应该将 `&&(A.right, B.left)` 改为 `&& f(A.right, B.left)`,以便正确地递归调用函数。修正后的代码如下所示:
```javascript
var isSymmetric = function(root) {
if(root === null || (root.left === null && root.right === null)) return true
const f = (A, B)=>{
if(A === null && B === null) return true
if(A === null || B === null) return false
if(A.val !== B.val) return false
return f(A.left, B.right) && f(A.right, B.left)
}
return f(root.left, root.right)
};
```
此时,输入 `[2,3,3,4,5,null,4]` 将不会出现问题。代码将判断给定二叉树是否是对称的。
class Solution { public boolean isSameTree(TreeNode root, TreeNode subRoot) { if (p == null && q != null || p != null && q == null) { return false; } if (p == null && q == null) { return true; } if (p.val != q.val) { return false; } return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); } }Char 11: error: expected ':' public boolean isSameTree(TreeNode root, TreeNode subRoot) 报了这个错误哪里有问题
在这段代码中,你在方法签名中将参数命名为 `root` 和 `subRoot`,但是在方法体中使用了 `p` 和 `q`。这导致编译器无法识别 `p` 和 `q`,从而出现了错误。
为了解决这个问题,你需要将 `p` 和 `q` 替换为 `root` 和 `subRoot`。
修改后的代码如下:
```
class Solution {
public boolean isSameTree(TreeNode root, TreeNode subRoot) {
if (root == null && subRoot != null || root != null && subRoot == null) {
return false;
}
if (root == null && subRoot == null) {
return true;
}
if (root.val != subRoot.val) {
return false;
}
return isSameTree(root.left, subRoot.left)
&& isSameTree(root.right, subRoot.right);
}
}
```
这个修改后的代码应该可以正确地比较两棵树是否相同。