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