翻转二叉树
练习:翻转二叉树
翻转一棵二叉树。

class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null)
return null;
// if(root.left!=null&&root.right!=null){
// int tem=root.left.val;
// root.left.val=root.right.val;
// root.right.val=tem;
// }
TreeNode temTree = root.right;
root.right=root.left;
root.left=temTree;
root.left= invertTree(root.left);
root.right=invertTree(root.right);
return(root);
}
}
尝试了几种方法,采用分治的想法这题就比较简单
之前先尝试了用交换值,不好用,直接定义中间节点就好了,直接左右子节点交换
练习:相同的树
判断两个数是否相同

妈耶,破防了,我还以为肯定没有问题

有进步

class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
// if(q==null||p==null)//这里有问题
if(q==null&&p==null)
return true;
if(p==null&&q!=null||p!=null&&q==null)
return false;
if(p!=null&&q!=null&&p.val!=q.val)
return false;
boolean bleft= isSameTree(p.left,q.left);
boolean bright= isSameTree(p.right,q.right);
return bleft&&bright;
}
}
妈耶争了口气,哼!!!!
练习:对称二叉树


1 class Solution { 2 public boolean isSymmetric(TreeNode root) { 3 if(root!=null) 4 return Symmetric(root.left,root.right); 5 return true; 6 } 7 8 public boolean Symmetric(TreeNode root1,TreeNode root2) { 9 if(root1==null&&root2==null) 10 return true; 11 if(root1==null&&root2!=null||root1!=null&&root2==null) 12 return false; 13 if(root1!=null&root2!=null&&root1.val!=root2.val) 14 return false; 15 boolean b = Symmetric(root1.left,root2.right); 16 boolean b2=Symmetric(root1.right,root2.left); 17 return b&&b2; 18 } 19 }
由于给的函数的测试用例是单值,故要自己去构造双值函数

浙公网安备 33010602011771号