"Programmer Code Interview Guide" Chapter 3 Binary Tree Questions Determine whether the t1 tree contains all the topological structures of the t2 tree

topic

判断t1树是否包含t2树全部的拓扑结构

java code

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

result

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324400361&siteId=291194637