题目描述
对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。
给定两棵二叉树的头结点A和B,请返回一个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 }
浙公网安备 33010602011771号