ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

剑指offer计划7(搜索与回溯算法简单版)---java

2021-09-07 09:33:04  阅读:200  来源: 互联网

标签:right java offer return --- TreeNode null root left


1.1、题目1

剑指 Offer 26. 树的子结构

1.2、解法

这题看了解法,感叹真的6,代码量减了很多。

(A != null && B != null) && (recur(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B));

这一句实现了遍历整个树来寻找二叉树,并,同时加上了判断条件。

而recur函数中,则负责判断两个结点下的二叉树是否相同。

当结点移到null的时候,就证明已经结束,并且目前所经过的值都相同,则返回true

这题答案看了之后:“好像我也会。”

过几天一看:“咋做来着。”

1.3、代码

class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        return (A != null && B != null) && (recur(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B));
    }
    boolean recur(TreeNode A, TreeNode B) {
        if(B == null) return true;
        if(A == null || A.val != B.val) return false;
        return recur(A.left, B.left) && recur(A.right, B.right);
    }
}


2.1、题目2

剑指 Offer 27. 二叉树的镜像

2.2、解法

其实这几行代码还能再简洁一点,因为left和right没变,可以把交换放在下面,

但是你懂就好啦,hhhhh,这题就是递归下去。

2.3、代码

class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root==null) return null;
        TreeNode left = root.left;
        root.left=root.right;
        root.right=left;
        root.left=mirrorTree(root.left);
        root.right=mirrorTree(root.right);
        return root;
    }
}

3.1、题目3

剑指 Offer 28. 对称的二叉树

3.2、解法

这题自定义函数RECUR,通过判断null或者值不相同返回false,递归解决。

3.3、代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return root==null?true:recur(root.left,root.right);
    }
    boolean recur (TreeNode a,TreeNode b){
        if(a==null && b==null) return true;
        if(a==null || b==null ||a.val!=b.val)  return false;
        return recur(a.left,b.right) && recur(a.right,b.left);
    }
}

标签:right,java,offer,return,---,TreeNode,null,root,left
来源: https://www.cnblogs.com/urmkhaos/p/15236736.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有