@@ -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