《剑指Offer》17树的子结构

题目:
输入两棵二叉树A和B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
过去提交通过的代码:
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }
}
public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {         boolean result=false;         if(root1!=null&&root2!=null) {             if(root1.val==root2.val) {                 result=DoesRoot1HaveRoot2(root1,root2);             }             if(!result) {                 result=HasSubtree(root1.left,root2);             }             if(!result) {                 result=HasSubtree(root1.right,root2);             }         }         return result;
    }     boolean DoesRoot1HaveRoot2(TreeNode pRoot1,TreeNode pRoot2) {         if(pRoot2==null) {             return true;         }         if(pRoot1==null) {             return false;         }         if(pRoot1.val!=pRoot2.val) {             return false;         }         return DoesRoot1HaveRoot2(pRoot1.left,pRoot2.left)&&DoesRoot1HaveRoot2(pRoot1.right,pRoot2.right);     }
}
再写一次:
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {     public boolean HasSubtree(TreeNode root1,TreeNode root2) {         boolean res=false;         if (root1!=null&&root2!=null) {             if (root1.val==root2.val) {                 res=DoesRootHaveRoot2(root1,root2);             }             if (!res) {                 res=DoesRootHaveRoot2(root1.left,root2);             }             if (!res) {                 res=DoesRootHaveRoot2(root1.right,root2);             }         }         return res;     }     public boolean DoesRootHaveRoot2(TreeNode pRoot1,TreeNode pRoot2) {         if (pRoot2==null) {             return true;         }         if (pRoot1==null) {             return false;         }         if (pRoot1.val!=pRoot2.val) {             return false;         }         return DoesRootHaveRoot2(pRoot1.left,pRoot2.left)&&DoesRootHaveRoot2(pRoot1.right,pRoot2.right);     }
}

全部评论
点赞 回复 分享
发布于 2019-07-28 09:33

相关推荐

肥沃富饶:可能初创公司,老板不懂技术
点赞 评论 收藏
分享
2024-12-27 23:45
已编辑
三江学院 Java
程序员牛肉:死局。学历+无实习+项目比较简单一点。基本就代表失业了。 尤其是项目,功能点实在是太假了。而且提问点也很少。第一个项目中的使用jwt和threadlocal也可以作为亮点写出来嘛?第二个项目中的“后端使用restful风格”,“前端采用vue.JS”,“使用redis”也可以作为亮点嘛? 项目实在是太简单了,基本就是1+1=2的水平。而你目标投递的肯定也是小厂,可小厂哪里有什么培养制度,由于成本的问题,人家更希望你来能直接干活,所以你投小厂也很难投。基本就是死局,也不一定非要走后端这条路。可以再学一学后端之后走测试或者前端。 除此之外,不要相信任何付费改简历的。你这份简历没有改的必要了,先沉淀沉淀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务