剑指Offer-18
来源:互联网 发布:重庆市干部网络 编辑:程序博客网 时间:2024/06/06 04:05
题目:
输入两棵树 A 和 B,判断 B 是不是 A 的子结构。
实现
//coding = javapublic class Solution18 { public static boolean hasSubTree(BinaryTreeNode root1,BinaryTreeNode root2){ boolean result = false; if(root1 == root2){ return true; } if(root2==null){ return true; } if(root1!=null && root2!=null){ if(root1.value == root2.value){ result = doseTree1HasTree2(root1,root2); } if(!result){ result = hasSubTree(root1.left,root2); } if(!result){ result = hasSubTree(root1.right,root2); } } return result; } public static boolean doseTree1HasTree2(BinaryTreeNode root1,BinaryTreeNode root2){ if(root2==null){ return true; } if(root1==null){ return false; } if(root1.value!=root2.value){ return false; } return doseTree1HasTree2(root1.left,root2.left) && doseTree1HasTree2(root1.right,root2.right); } public static void main(String[] args) { BinaryTreeNode root1 = new BinaryTreeNode(); root1.value = 8; root1.right = new BinaryTreeNode(); root1.right.value = 7; root1.left = new BinaryTreeNode(); root1.left.value = 8; root1.left.left = new BinaryTreeNode(); root1.left.left.value = 9; root1.left.right = new BinaryTreeNode(); root1.left.right.value = 2; root1.left.right.left = new BinaryTreeNode(); root1.left.right.left.left = new BinaryTreeNode(); root1.left.right.left.left.value = 4; root1.left.right.left.right = new BinaryTreeNode(); root1.left.right.left.right.value = 7; BinaryTreeNode root2 = new BinaryTreeNode(); root2.value = 8; root2.left = new BinaryTreeNode(); root2.left.value = 9; root2.right = new BinaryTreeNode(); root2.right.value = 2; System.out.println(hasSubTree(root1, root2)); System.out.println(hasSubTree(root2, root1)); System.out.println(hasSubTree(root1, root1.left)); System.out.println(hasSubTree(root1, null)); System.out.println(hasSubTree(null, root2)); System.out.println(hasSubTree(null, null)); }}class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode right; public BinaryTreeNode() { } public BinaryTreeNode(int val) { this.value = val; }}
阅读全文
1 0
- 剑指offer 18
- 剑指Offer-18
- 剑指offer题18
- 剑指offer面试题18
- 剑指offer(18)-丑数
- 剑指OFFER
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指offer
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指offer
- 剑指Offer
- 剑指offer
- vue2.0+webpack踩过的坑
- 判断编码格式
- Fatfs f_size()API用法
- JAVA微信扫码支付模式二功能实现以及回调
- 10分钟快速理解依赖注入
- 剑指Offer-18
- 关于IO
- 【OpenGL ES】图元装配与光栅化
- 面试题【Java中Set和Map】
- android http与web View的cookie管理
- olap4j.jar 坑点一二
- SVN命令使用详解
- Visual Studio VC++编译出错问题:"逐用户重定向"解决
- .cc