剑指 Offer 26. 树的子结构
package leetcode; import java.util.LinkedList; import java.util.Queue; public class offer_26 { public boolean isSubStructure(TreeNode A, TreeNode B) { if(A==null||B==null) {return false;} Queue<TreeNode> queue=new LinkedList<TreeNode>(); queue.add(A); while(!queue.isEmpty()) { TreeNode node=queue.poll(); //找出B树在A树中根节点相同的位置 if(node.val==B.val) { if(compare(node, B)==true) { return true; } } if(node.left!=null) { queue.add(node.left); } if(node.right!=null) { queue.add(node.right); } } return false; } public boolean compare(TreeNode A,TreeNode B) { //B树递归至底都是相同的,则相同 if(B==null) { return true; } //A树为空B树不为空,则不是相同的 if(A==null) { return false; } //AB树节点值不相等也不同 if(A.val!=B.val) { return false; } //同时递归左节点和右节点 return compare(A.left, B.left)&&compare(A.right, B.right); } }