【笔试】36、树的子结构
来源:互联网 发布:flickerplate.js 编辑:程序博客网 时间:2024/06/15 12:47
我们数的结果,以及创建的类我们在
http://blog.csdn.net/cutter_point/article/details/48004301
已经从建过了,我们引入就可以了,不过 BinaryTreeNode里面的两个成员变量的权限最好改为public类型的,不然再写个get和set函数很麻烦,
毕竟java没有友元类这个玩意
/**************************************************************************************** *题目:树的子结构 *输入两颗二叉树A和B,判断B是不是A的子结构。二叉树节点的定义如下。 *时间:2015年8月31日09:02:36 *文件:MergeLink.java *作者:cutter_point ****************************************************************************************/package bishi.Offer50.y2015.m08.d31;import org.junit.Test;//引入我们的树的结构import bishi.Offer50.y2015.m08.d26.*;public class HasSubTree{/** * 用来比较两个树是否相同 * @param pRoot1 * @param pRoot2 * @return */private boolean compare(BinaryTreeNode pRoot1, BinaryTreeNode pRoot2){if(pRoot2 == null)return true;if(pRoot1 == null && pRoot2 != null)return false;//如果值不同,直接falseif(pRoot1.m_nValue != pRoot2.m_nValue)return false;//开始比较剩下的节点return compare(pRoot1.m_pLeft, pRoot2.m_pLeft) && compare(pRoot1.m_pRight, pRoot2.m_pRight);}/** * 比较两个树,看看pRoot1中是否含有pRoot2的子结构 * @param pRoot1 * @param pRoot2 * @return */public boolean hasSubTree(BinaryTreeNode pRoot1, BinaryTreeNode pRoot2){if(pRoot1 == null)return false;else if(pRoot1 != null && pRoot2 == null)return true;boolean result = false;if(pRoot1.m_nValue == pRoot2.m_nValue){//如果根相同,那么我们进行这颗树的比较result = compare(pRoot1, pRoot2);}//ifif(result == false){//比较失败的话,我们就比较左边的子树result = hasSubTree(pRoot1.m_pLeft, pRoot2);}//ifif(result == false){//左边比较失败,我们比较右边的result = hasSubTree(pRoot1.m_pRight, pRoot2);}//ifreturn result;}@Testpublic void test(){//注意,这里我们根据前序和中序的方式创建树的话,是有问题的,因为我们的树不是排序二叉树//也就是我们的树中有重复元素,我们构建这个树的时候并没有考虑到这点,光从序列上来说实现的难度略大//以后有机会,我们再从新改过,2015年8月31日09:56:13int preorder[] = {7,8,9,2,4,3,6};//前序int inorder[] = {9,8,4,2,3,7,6};//中序int preorder2[] = {8,9,2};//前序int inorder2[] = {9,8,2};//中序BinaryTree bt = new BinaryTree();bt.construct(preorder, inorder);BinaryTree bt2 = new BinaryTree();bt.construct(preorder2, inorder2);HasSubTree hst = new HasSubTree();boolean hastree = false;hastree = hst.hasSubTree(bt.root, bt2.root);System.out.println(hastree);}}
0 0
- 【笔试】36、树的子结构
- 笔试面试算法经典--二叉树的子结构(Java)
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- sublime text插件
- 一个查看源代码的问题
- 干货分享!不得不看的【7年竞价实战经验总结】
- NSString 之 length 别让眼睛欺骗了你
- 数据源的配置
- 【笔试】36、树的子结构
- 谈谈展望
- 【java】File类的详解使用方法
- oracle 存储过程 报 无效字符
- Eclipse使用技巧
- SylixOS入门指南--架设开发环境
- Vim命令合集(貌似有的有错误,Mark在这里,用到的时候来找)
- SpringMVC框架介绍
- 运行程序报错:the file"xxx"couldn't be open because you don't have permisslion to view it