题目
判断t1树是否包含t2树全部的拓扑结构
java代码
package com.lizhouwei.chapter3;
/**
* @Description:判断t1树是否包含t2树全部的拓扑结构
* @Author: lizhouwei
* @CreateDate: 2018/4/14 22:31
* @Modify by:
* @ModifyDate:
*//*
*@Author lizhouwei
*/
public class Chapter3_11 {
public boolean isContains(Node head1, Node head2) {
if (head1 == null) {
return false;
}
return check(head1, head2) || isContains(head1.left, head2) || isContains(head1.right, head2);
}
public boolean check(Node head1, Node head2) {
if (head2 == null) {
return true;
}
if (head1 == null || head1.value != head2.value) {
return false;
}
return check(head1.left, head2.left) && check(head1.right, head2.right);
}
//测试
public static void main(String[] args) {
Chapter3_11 chapter = new Chapter3_11();
Node head1 = new Node(1);
head1.left = new Node(2);
head1.right = new Node(3);
head1.left.left = new Node(4);
head1.left.right = new Node(5);
head1.right.left = new Node(6);
head1.right.right = new Node(7);
head1.left.left.left = new Node(8);
head1.left.left.right = new Node(9);
head1.left.right.left = new Node(10);
Node head2 = new Node(2);
head2.left = new Node(4);
head2.right = new Node(5);
head2.left.left = new Node(8);
System.out.print("head1 是否包含head2 :" + chapter.isContains(head1, head2));
}
}
结果