刷题-剑指 Offer 28. 对称的二叉树

一、题目

刷题-剑指 Offer 28. 对称的二叉树

 

二、分析

  1.看到题目就想到利用递归去解决问题,首先第一点要不断地去判断两边节点,第二点递归可以提升代码的速度

  2.在递归里面首先我们要先考虑两边节点都是否为空,都为空说明,前面的遍历对比都是对的,所以输出true;第二点若其中有个节点为空,另个节点不为空,说明没有存在镜像,输出false;最后在递归里头我们是需要不断的遍历比较两边的节点的,怎么去判断比较,只要左树的左节点等于右树的右节点的值,左树的右节点等于右树的左节点

三、代码展示

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    if(!root) return true;
    function dfs(node1,node2){
       //先判断两个节点是否为空
        if(!node1 && !node2 ) return true;
       //判断两个节点其中有个为空
        else if(!node1 || !node2 ) return false;
        return(
            node1.val === node2.val &&
            dfs(node1.left, node2.right) &&
            dfs(node1.right, node2.left)
        )
    };
    return dfs(root.left,root.right);
};

 

 

 

上一篇:PAT甲级1013 Battle Over Cities (25 分)


下一篇:25:最长最短单词