码迷,mamicode.com
首页 > 其他好文 > 详细

[程序员代码面试指南]二叉树问题-树1是否包含树2的拓扑结构

时间:2019-06-13 00:56:06      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:注意   out   null   boolean   包含   二叉树   结构   关系   时间复杂度   

题解

  • 先序遍历树1,判断树1以每个节点为根的子树是否包含树2的拓扑结构。
  • 时间复杂度:O(M*N)
  • 注意区分判断总体包含关系、和判断子树是否包含树2的函数。

代码

public class Main {
    public static void main(String args[]) {
        //test
                Node n1=new Node(1);
        Node n2=new Node(2);
        Node n3=new Node(3);
        Node n4=new Node(4);
        n1.left=n2;
        n1.right=n3;
        n3.left=n4;
        
        Node n5=new Node(3);
        Node n6=new Node(4);
        n5.left=n6;
        
        if(contains(n1,n5)) {
            System.out.print("contains");
        }
        else {
            System.out.print("not contains");
        }
    }
    
    public static boolean contains(Node root,Node rootTest) {
        if(rootTest==null) {
            return true;
        }
        if(root==null) {
            return false;
        }
        return check(root,rootTest)||contains(root.left,rootTest)||contains(root.right,rootTest);
    }
    
    public static boolean check(Node root,Node rootTest) {
        if(rootTest==null) {
            return true;
        }
        if(root==null||root.val!=rootTest.val) {
            return false;
        }
        return check(root.left,rootTest.right)&&check(root.right,rootTest.right);??????                                        
    }
}

[程序员代码面试指南]二叉树问题-树1是否包含树2的拓扑结构

标签:注意   out   null   boolean   包含   二叉树   结构   关系   时间复杂度   

原文地址:https://www.cnblogs.com/coding-gaga/p/11013656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!