树的子结构
来源:互联网 发布:地球防卫少年 知乎 编辑:程序博客网 时间:2024/04/20 08:09
题目
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路
两个递归函数
一个递归遍历A树节点
一个递归验证子树是否符合要求
public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1==null || root2==null) return false; if(isSubtree(root1, root2)) //验证子树 return true; return HasSubtree(root1.left,root2)|HasSubtree(root1.right,root2); //遍历A树节点 } public boolean isSubtree(TreeNode root1,TreeNode root2){ if(root2==null) return true; if(root1==null||root1.val!=root2.val) return false; return isSubtree(root1.left, root2.left)&isSubtree(root1.right, root2.right); }}