import org.junit.Test;
public class solution {
@Test
public void testFunc(){
TreeNode root1 = new TreeNode(1);
TreeNode root2 = new TreeNode(2);
TreeNode root3 = new TreeNode(3);
root1.left=root2;
root1.right=root3;
TreeNode root4 =new TreeNode(1);
TreeNode root5 = new TreeNode(2);
TreeNode root6= new TreeNode(3);
root4.left=root5;
root4.right=root6;
boolean flag = isSubTree(root1, root4);
System.out.println("flag: "+flag);
}
//判断二叉树B是不是二叉树A的子结构
public boolean isSubTree(TreeNode aNode, TreeNode bNode){
if(bNode==null || aNode==null){
return false;
}
boolean flag =false;
if (aNode.val==bNode.val) {
flag = hasSubTree2(aNode, bNode);
}
if (!flag) {
flag = isSubTree(aNode.left, bNode);
}
if (!flag) {
flag=isSubTree(aNode.right, bNode);
}
return flag;
}
private boolean hasSubTree2(TreeNode aNode, TreeNode bNode) {
if (bNode==null) {
return true;
}
if (aNode==null) {
return false;
}
if (aNode.val!=bNode.val) {
return false;
}
return hasSubTree2(aNode.left, bNode.left) && hasSubTree2(aNode.right, bNode.right);
}
}
本文介绍了一种判断一棵二叉树是否为另一棵二叉树的子结构的方法,并通过具体的示例代码进行了演示。主要涉及二叉树的遍历与比较逻辑。
2888

被折叠的 条评论
为什么被折叠?



