判断二叉树B是不是二叉树A的子结构





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);
        
    }
    
    
    
}

猜你喜欢

转载自blog.csdn.net/wwzheng16/article/details/81047852