翻转二叉树
练习:翻转二叉树
翻转一棵二叉树。
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 }
由于给的函数的测试用例是单值,故要自己去构造双值函数