三道题搞懂子树问题

代码模板

public boolean f(TreeNode p, TreeNode q) {
        if(p==null&&q==null)return true;
        if(p==null||q==null||p.val!=q.val)return false;
        //false的条件
        return f(p.left,q.left)&&f(p.right,q.right);
    }

相同的树(LeetCode100)

初级:遍历即可,模板题

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p==null&&q==null)return true;
        if(p==null||q==null||p.val!=q.val)return false;
        return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
    }
}

对称的树(LeetCode101)

中级:把题目看成判断两棵子树是否符合条件即可

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null)  return true;
        return Symmetric(root.left,root.right);
    }
    public boolean Symmetric(TreeNode left,TreeNode right){
        if(left==null&&right==null) return true;
        if(left==null||right==null) return false;
        if(left.val!=right.val)  return false;
        return Symmetric(left.left,right.right)&&Symmetric(left.right,right.left);
    }
}

另一棵树的子树(LeetCode572)

高级:依旧是return的条件为比较的点

class Solution {
    public boolean isSame(TreeNode p,TreeNode q){
        if(p==null&&q==null)    return true;
        if(p==null||q==null||p.val!=q.val)    return false;
        return isSame(p.left,q.left)&&isSame(p.right,q.right);
    }
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        if(root==null)  return false;
        return isSame(root,subRoot)||isSubtree(root.left,subRoot)||isSubtree(root.right,subRoot);
    }
}

通过这三道题想必你已经对子树问题有自己的见解了(⊙o⊙)~~

相关推荐

  1. 问题

    2024-04-07 21:16:01       36 阅读
  2. 了XML!

    2024-04-07 21:16:01       35 阅读
  3. 一文MongoDB面试(2万字长文)

    2024-04-07 21:16:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 21:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 21:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 21:16:01       82 阅读
  4. Python语言-面向对象

    2024-04-07 21:16:01       91 阅读

热门阅读

  1. 整个项目吧(尚医通)

    2024-04-07 21:16:01       39 阅读
  2. 使用iPhone/安卓手机代替门禁卡

    2024-04-07 21:16:01       130 阅读
  3. 干了三年外包。。。忘了什么是CICD。。。

    2024-04-07 21:16:01       34 阅读
  4. Mongodb 入门

    2024-04-07 21:16:01       43 阅读
  5. Windows SDK(五)按钮静态文本与编辑框控件

    2024-04-07 21:16:01       43 阅读