天地无极,乾坤剑法

导航

 

题目描述 

对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。

给定两棵二叉树的头结点AB,请返回一个bool值,代表A中是否存在一棵同构于B的子树。

代码如下:

 1 import java.util.*;
 2 
 3 /*
 4 public class TreeNode {
 5     int val = 0;
 6     TreeNode left = null;
 7     TreeNode right = null;
 8     public TreeNode(int val) {
 9         this.val = val;
10     }
11 }*/
  // 一个函数求两棵树是否相同(递归),另一个函数递归求一个树的子树是否和另一棵树相同
12 public class IdenticalTree { 13 public boolean chkIdentical(TreeNode A, TreeNode B) { 14 // write code here 15 //在A中找到一个节点的值等于B,如果isSameTree返回的值是正确的,就返回正确,否则接着往下找 16 if(A == null) return false; 17 if(isSameTree(A, B)) return true; 18 return chkIdentical(A.left, B) || chkIdentical(A.right, B); 19 } 20 public boolean isSameTree(TreeNode A, TreeNode B){ 21 if(A == null && B == null) return true; 22 if(A == null || B == null) return false; 23 if(A.val != B.val) return false; 24 return isSameTree(A.left, B.left) && isSameTree(A.right, B.right); 25 } 26 27 }

 

posted on 2018-11-13 16:30  天地无极,乾坤剑法  阅读(226)  评论(0)    收藏  举报