码农小汪-剑指Offer之15-树的子结构
2016-03-30 18:32
381 查看
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。题解:
我们这个主要的问题就是,如何去判断一个是不是另一个的子树,首先一点。我们肯定涉及到对于树的值得比较,肯定会和遍历有关系啦。遍历最简单的递归去处理。我们找到相同的根节点
我们找到根节点之后,对于树的左右进行比较,一直比较完整个字数为结束。就是这个意思。
package JianzhiOffer; /** * 思路: * 1.我们要找到相同的根,然后进行一一的比较是否相等。这个过程中我们需要遍历我们的树 * 2.找到相同的根之后,进行一一的左右树的比较,也需要遍历 * @author JetWang * */ public class Sloution15 { public boolean HasSubtree(TreeNode root1, TreeNode root2) { boolean flag=false; if(root1!=null&&root2!=null){ if(root1.val==root2.val){ flag=IsSubtree(root1, root2); } if(!flag){ flag=HasSubtree(root1.left, root2); } if(!flag){ flag=HasSubtree(root1.right, root2); } } return flag; } /** * 这个是一个递归的过程,我们知道,root2,是roo1 的子树的条件是,对应的节点相等 * @param root1 * @param root2 * @return */ public boolean IsSubtree(TreeNode root1, TreeNode root2){ if(root2==null){ return true; } /** * root2都不为空,root1为空肯定不相等啦 */ if(root1==null){ return false; } if(root1.val!=root2.val){ return false; } /** * 比较相应的左右子树 */ return IsSubtree(root1.left,root2.left)&&IsSubtree(root1.right,root2.right); } }
相关文章推荐
- 常见面试题总结
- 常见面试题总结
- 程序员必备:100本免费编程图书以及整理IT网站
- 剑指offer面试题3—二维数组中的查找
- 程序员别迷茫,通往成功的路有很多条
- 程序员学习编程需要攻克的8个障碍
- leetCode之旅(12)-反转二叉树
- 剑指offer面试题之把数组排成最小的数
- 面试题66:对称的二叉树
- IT职业发展路线图
- 面试题65:二叉树的下一个结点
- 【剑指Offer面试题】 九度OJ1389:变态跳楼梯
- 2017阿里内推实习生面试经历(已获得offer)
- 剑指offer-面试题18:树的子结构
- 程序员表白神器。安卓程序员表白软件。程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花+相爱天数计时器
- 程序员互动联盟(第一届编程大赛第一题)
- 网易2016杭研公共技术部安卓开发实习生面试
- 面试题64:链表中环的入口结点
- java面试题之static
- 求大数阶乘算法(华为2015面试题)