Skip to content

Latest commit

 

History

History
75 lines (61 loc) · 2.65 KB

101.md

File metadata and controls

75 lines (61 loc) · 2.65 KB

✏️ Leetcode基础刷题之(101. Symmetric Tree)


. 2019-02-05 吴亲库里 库里的深夜食堂


✏️ 题目描述

给定一个二叉树,判断这个二叉树是不是对称的?


✏️ 题目实例

给定一个二叉树[1,2,2,3,4,4,3],这个是对称的,但是[1,2,2,null,3,null,3]不是对称的


✏️ 题目分析

对于待比较的两个点,有四种情况:

1.两个点都是null的话,那么他们相等,返回true(也表示走到树的叶子节点了,直接返回)

2.如果一个点是null,另一个点不是null,那么不相等,返回false(其中的一个边已经是叶子节点了)

3.两个都不是null,但是他们不相等,直接返回false,判断条件

4.如果他们两个点(暂且成为a和b)相等(左子数和右子树),那么继续判断他们的子节点,把a的左子节点和b的右子节点进行上述的比较 把a的右子节点和b的左子节点进行比较,利用 && 来进行控制,其中一个返回false,就表示当前的二叉树不是对称的。**


✏️ 最终实现代码

    /**
        * @param TreeNode $root
        * @return Boolean
        */
       function isSymmetric($root) {
           if(!$root){
               return true;
           }
           return $this->check_tree($root->left,$root->right);
       }
       
       function check_tree($x,$y){
           if(!$x && !$y){
               return true;
           }
           if(!$x || !$y || $x->val !== $y->val){
               return false;
           }
           return $this->check_tree($x->left,$y->right) &&
               $this->check_tree($x->right,$y->left);
       }

💾今天的数据库(626. Exchange Seats)

###题目描述 改变邻近学生的位置,比如说1和2的互换,3和四互换,5没有那么就不换.这里的话就要分情况了,如果不被二整除并且当前学生id值不大于总学生数, 说明当前的学生可以和他的邻座换,否则当前数是最后一个座位没得换了


💾最终实现sql

SELECT id,
case 
   when id%2 =0 then(select student from seat where id=(i.id-1))
   when id%2 !=0 and id<(select count(student) from seat) then (select student from seat where id=(i.id+1))
   else student
   end as student 
   from seat i;

联系