Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Leetcode同树迭代解法_Javascript_Algorithm_Binary Tree_Breadth First Search - Fatal编程技术网

Javascript Leetcode同树迭代解法

Javascript Leetcode同树迭代解法,javascript,algorithm,binary-tree,breadth-first-search,Javascript,Algorithm,Binary Tree,Breadth First Search,问题: 有人能指出为什么我的JavaScript解决方案可以通过测试用例,但在实际提交过程中失败了吗 var isSameTree=函数(p,q){ 让队列=[]; 排队推送(p); 排队推送(q); 而(!queue.length){ 设p=queue.shift(); 设q=queue.shift(); if(p==null&&q==null){ 继续; }else如果(p==null | | q==null | | p.val!=q.val){ 返回false; }否则{ 排队推送(p.左

问题:

有人能指出为什么我的JavaScript解决方案可以通过测试用例,但在实际提交过程中失败了吗

var isSameTree=函数(p,q){
让队列=[];
排队推送(p);
排队推送(q);
而(!queue.length){
设p=queue.shift();
设q=queue.shift();
if(p==null&&q==null){
继续;
}else如果(p==null | | q==null | | p.val!=q.val){
返回false;
}否则{
排队推送(p.左);
排队推送(q.左);
排队推送(右上角);
queue.push(q.right);
}
}
返回true;
};

@trincot在评论中提到了这一点

只需更新while循环中的比较即可进入该循环

var isSameTree=函数(p,q){
让队列=[];
排队推送(p);
排队推送(q);
while(queue.length!=0){
设p=queue.shift();
设q=queue.shift();
if(p==null&&q==null){
继续;
}else如果(p==null | | q==null | | p.val!=q.val){
返回false;
}否则{
排队推送(p.左);
排队推送(q.左);
排队推送(右上角);
queue.push(q.right);
}
}
console.log(队列);
返回true;

};基本上需要遍历这两棵树。因此,必须以某种方式递归编写函数。您当前的实现只是检查树的根的相等性,仅此而已。但这不是我在值不匹配的情况下使用这一行的原因吗:else如果(p==null | | | q==null | | p.val!=q.val){return false;}想象两棵树都有一个值为
3
的根。接下来会发生什么?while的
条件是它永远不会进入循环。打字错误…;-)啊,就是这样!谢谢