《程序员代码面试指南》第三章 二叉树问题 判断t1树是否包含t2树全部的拓扑结构

题目

判断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));
    }
}

结果

原文地址:https://www.cnblogs.com/lizhouwei/p/8836356.html