java 输入两颗二叉树A,B,判断B是不是A的子结构。

输入两颗二叉树A,B,判断B是不是A的子结构。

解题思路:

1、找到A中和B的根节点相同的节点,然后进行判断是否相同。

2、如果不同再拿A的左子树与B进行比较。

3、如果仍不同再拿A的右子树与B进行比较。

4、如果仍未找到,则A中不包含B。

判断两个根节点相同的两个树是否包含:

1、先判断B,如果B为空说明包含。

2、再判断A,如果A为空说明不包含。

3、如果A的值与B的值相同然后继续进行此判断。

public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
	        boolean result=false;
	        if(root1!=null &&root2!=null){
	        	if(root1.val==root2.val){
	        		result=AhaseB(root1,root2);
	        	}
	        	if(result==false){
	        		result=HasSubtree(root1.left,root2)||HasSubtree(root1.right,root2);
	        	}
	        }
	        return result;
	    }
		public boolean AhaseB(TreeNode root1,TreeNode root2){
			if(root2==null)
				return true;
			if(root1==null)
				return false;
			if(root1.val==root2.val){
				return AhaseB(root1.left,root2.left)&& AhaseB(root1.right,root2.right);
			}
			return false;
		}
}
    原文作者:B树
    原文地址: https://blog.csdn.net/qq_23217629/article/details/51735158
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞