题目描述:输入两棵二叉树 A,B,判断 B 是不是 A 的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:若根节点相等,利用递归比较他们的子树是否相等,若根节点不相等,则利用递归分别在左右子树中查找。
public boolean hasSubTree(TreeNode source, TreeNode target) {
if(source == null && target == null) {
return false;
}
if(xiangdeng(source,target)) {
return true;
}
return hasSubTree(source.left, target) || hasSubTree(source.right,target);
}
public static boolean xiangdeng(TreeNode treenode1,TreeNode treenode2) {
if(treenode1 == null && treenode2 == null) {
return true;
}
if(treenode1 == null || treenode2 == null) {
return false;
}
if(treenode1.data != treenode2.data) {
return false;
}
return xiangdeng(treenode1.left,treenode2.left)&&xiangdeng(treenode1.right,treenode2.right);
}