题目


代码
思路
如果二叉树B是二叉树A的子树,A树中必然存在B树的根节点。所以,先比较A树的根节点与B树的根节点,如果相同,则采用递归方法比较A树的左子树和B树的左子树以及比较A树的右子树和B树的右子树。如果不相同,则用A树根节点的左孩子与B树的跟节点比较,这里调用的是isSubStructure方法而不是helper方法是因为A树根节点的左孩子不一定存在。如果还不相同,同理用A树根节点的右孩子与B树的跟节点比较。
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
return (A != null) && (B != null) &&((helper(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B)));
}
public boolean helper(TreeNode A, TreeNode B) {
if (B == null) return true;
if (A == null || A.val != B.val) return false;
return helper(A.left,B.left) && helper(A.right,B.right);
}
}
版权声明:本文为qq_29494693原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。