输入两棵二叉树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));
}
}