【题目】
给定彼此独立的两棵树头结点分别为t1和t2,判断t1树是否包含t2树全部的拓扑结构。若包含,返回true
【代码】
//判断t1树是否包含t2树全部的拓扑结构
public static boolean contains(Node t1,Node t2){
if(t1==null||t2==null) return false;
//检查t1树的节点,若失败,再寻找t1的左右孩子是否与t2匹配
return check(t1,t2) || contains(t1.left,t2) || contains(t1.right,t2);
}
//挨个检查数的节点
private static boolean check(Node h, Node t2) {
if(t2==null){//t2遍历完了,说明已经匹配成功
return true;
}
if(h==null||h.value!=t2.value){//当前节点匹配失败
return false;
}
//再检查当前节点的左右孩子
return check(h.left,t2.left) && check(h.right,t2.right);
}
本文介绍了一种用于判断一棵树是否包含另一棵树所有拓扑结构的算法。通过递归方式检查节点值并比较子树结构来实现。适用于需要验证树结构一致性的场景。
489

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



