Skip to content

Commit e9f8cda

Browse files
Merge pull request #242 from xllpiupiu/master
0101.对称二叉版本树JavaScript
2 parents dbbd90b + b20ac9c commit e9f8cda

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

problems/0101.对称二叉树.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,90 @@ const check = (leftPtr, rightPtr) => {
379379
return leftPtr.val === rightPtr.val && check(leftPtr.left, rightPtr.right) && check(leftPtr.right, rightPtr.left)
380380
}
381381
```
382+
JavaScript:
383+
384+
递归判断是否为对称二叉树:
385+
```javascript
386+
var isSymmetric = function(root) {
387+
//使用递归遍历左右子树 递归三部曲
388+
// 1. 确定递归的参数 root.left root.right和返回值true false
389+
const compareNode=function(left,right){
390+
//2. 确定终止条件 空的情况
391+
if(left===null&&right!==null||left!==null&&right===null){
392+
return false;
393+
}else if(left===null&&right===null){
394+
return true;
395+
}else if(left.val!==right.val){
396+
return false;
397+
}
398+
//3. 确定单层递归逻辑
399+
let outSide=compareNode(left.left,right.right);
400+
let inSide=compareNode(left.right,right.left);
401+
return outSide&&inSide;
402+
}
403+
if(root===null){
404+
return true;
405+
}
406+
return compareNode(root.left,root.right);
407+
};
408+
```
409+
队列实现迭代判断是否为对称二叉树:
410+
```javascript
411+
var isSymmetric = function(root) {
412+
//迭代方法判断是否是对称二叉树
413+
//首先判断root是否为空
414+
if(root===null){
415+
return true;
416+
}
417+
let queue=[];
418+
queue.push(root.left);
419+
queue.push(root.right);
420+
while(queue.length){
421+
let leftNode=queue.shift();//左节点
422+
let rightNode=queue.shift();//右节点
423+
if(leftNode===null&&rightNode===null){
424+
continue;
425+
}
426+
if(leftNode===null||rightNode===null||leftNode.val!==rightNode.val){
427+
return false;
428+
}
429+
queue.push(leftNode.left);//左节点左孩子入队
430+
queue.push(rightNode.right);//右节点右孩子入队
431+
queue.push(leftNode.right);//左节点右孩子入队
432+
queue.push(rightNode.left);//右节点左孩子入队
433+
}
434+
return true;
435+
};
436+
```
437+
栈实现迭代判断是否为对称二叉树:
438+
```javascript
439+
var isSymmetric = function(root) {
440+
//迭代方法判断是否是对称二叉树
441+
//首先判断root是否为空
442+
if(root===null){
443+
return true;
444+
}
445+
let stack=[];
446+
stack.push(root.left);
447+
stack.push(root.right);
448+
while(stack.length){
449+
let rightNode=stack.pop();//左节点
450+
let leftNode=stack.pop();//右节点
451+
if(leftNode===null&&rightNode===null){
452+
continue;
453+
}
454+
if(leftNode===null||rightNode===null||leftNode.val!==rightNode.val){
455+
return false;
456+
}
457+
stack.push(leftNode.left);//左节点左孩子入队
458+
stack.push(rightNode.right);//右节点右孩子入队
459+
stack.push(leftNode.right);//左节点右孩子入队
460+
stack.push(rightNode.left);//右节点左孩子入队
461+
}
462+
return true;
463+
};
464+
```
465+
382466

383467

384468
-----------------------

0 commit comments

Comments
 (0)