[程序员代码面试指南]二叉树问题-树1是否包含树2的拓扑结构
Posted coding-gaga
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[程序员代码面试指南]二叉树问题-树1是否包含树2的拓扑结构相关的知识,希望对你有一定的参考价值。
题解
- 先序遍历树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的拓扑结构的主要内容,如果未能解决你的问题,请参考以下文章
[程序员代码面试指南]二叉树问题-找到二叉树中两节点最近公共祖先
左神算法书籍《程序员代码面试指南》——2_12将搜索二叉树转换成双向链表★★
左神算法书籍《程序员代码面试指南》——2_12将搜索二叉树转换成双向链表