输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
代码:
package offer;
 class TreeNode
 {
     int val;
     TreeNode left = null;
     TreeNode right = null;
     TreeNode(int val)
     {
         this.val = val;
     }
 }
 public class ti26 {
     public static boolean HasSon(TreeNode node1,TreeNode node2)
     {
         boolean result = false;
         if(node1!=null&&node2!=null)
         {
             if(node1.val==node2.val)
             {
                 result = HasSon2(node1,node2);
             }
             if(!result)
             {
                 result = HasSon(node1.left,node2);
             }
             if(!result)
             {
                 result = HasSon(node1.right,node2);
             }
         }
         return result;
     }
     public static boolean HasSon2(TreeNode node1,TreeNode node2)
     {
         if(node2==null)
         {
             return true;
         }
         if(node1==null)
         {
             return false;
         }
         if(node1.val!=node2.val)
         {
             return false;
         }
         return HasSon2(node1.left,node2.left)&&HasSon2(node1.right,node2.right);
         
     }
     public static void main(String[] args)
     {
         TreeNode node1 = new TreeNode(8);
         TreeNode node2 = new TreeNode(8);
         TreeNode node3 = new TreeNode(7);
         TreeNode node4 = new TreeNode(9);
         TreeNode node5 = new TreeNode(2);
         TreeNode node6 = new TreeNode(4);
         TreeNode node7 = new TreeNode(7);
         node1.left = node2;
         node1.right = node3;
         node2.left = node4;
         node2.right = node5;
         node5.left = node6;
         node5.right = node7;
         TreeNode node8 = new TreeNode(8);
         TreeNode node9 = new TreeNode(9);
         TreeNode node10 = new TreeNode(2);
         node8.left = node9;
         node8.right = node10;
         System.out.println(HasSon(node1,node8));
     }
 }