日月的弯刀  
Where Amazing Happens!

转载请标明出处http://www.cnblogs.com/haozhengfei/p/939baf5542d28226fb8be17272625afa.html 


拓扑结构相同子树问题

 
代码示例
 1 package com.hzf.string;
 2 
 3 import org.junit.Test;
 4 
 5 /**
 6  * 对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。
 7  * 
 8  * 给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。
 9  * 
10  * @author hzf
11  *
12  */
13 class TreeNode {
14     int val = 0;
15     TreeNode left = null;
16     TreeNode right = null;
17 
18     public TreeNode(int val) {
19         this.val = val;
20     }
21 }
22 
23 public class IdenticalTree {
24     public boolean chkIdentical(TreeNode A, TreeNode B) {
25         String sbA = preOrderTraverse(A).toString();
26         String sbB = preOrderTraverse(B).toString();
27         return sbA.contains(sbB);
28          
29     }
30     
31     //二叉树前序遍历
32     public String preOrderTraverse(TreeNode node){
33         if(node == null)
34             return "#!";
35         String sb = node.val + "!";
36         sb += preOrderTraverse(node.left);
37         sb += preOrderTraverse(node.right);
38         return sb;
39     }
40     @Test
41     public void test(){
42         String aString = "1245367";
43         String bString = "4";
44         System.out.println(aString.contains(bString));
45     }
46 }
View Code

 

 
posted on 2017-03-14 20:26  日月的弯刀  阅读(624)  评论(0编辑  收藏  举报