翻转二叉树

练习:翻转二叉树

翻转一棵二叉树。

 

 

 

 

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 }

由于给的函数的测试用例是单值,故要自己去构造双值函数

 

posted @ 2021-11-03 11:07  橘子味汽水  阅读(44)  评论(0编辑  收藏  举报