zoukankan      html  css  js  c++  java
  • LeetCode 572

    https://leetcode-cn.com/problems/subtree-of-another-tree/

    我们需要借助一个helper方法,这个思想就是双递归,即判断每个大树的节点和小树的根节点的值是否相等,如果相同就进入子树判断方法。否则就在大树节点的左节点和右节点查找。

    helper方法中,如果小树为空大树不为空或者两个值不相等,就返回false,如果两个都为空才返回true,否则就继续递归寻找左子树和右子树。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        public boolean isSubtree(TreeNode s, TreeNode t) {
            if(s == null){
                return false;
            }
            boolean flag = false;
            if(s.val == t.val){
                flag = helper(s.left,t.left) && helper(s.right, t.right);
            }
            return flag?flag:isSubtree(s.left,t) || isSubtree(s.right,t);
        }
    
        private boolean helper (TreeNode s, TreeNode t){
            if(t == null){
                if(s != null){
                    return false;
                }
                return true;
            }
            if(s == null || s.val != t.val){
                return false;
            }
            return helper(s.left,t.left)&&helper(s.right,t.right);
        }
    }
  • 相关阅读:
    npm 安装卸载模块 & ionic插件安装与卸载
    Vue中v-model解析、sync修饰符解析
    Vue props用法详解
    vue页面跳转
    Swift 4 中的泛型
    Swift枚举的全用法
    蓝牙 BLE 三种 UUID 格式转换
    SVG图案
    SVG渐变
    SVG坐标系统及图形变换
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/12842199.html
Copyright © 2011-2022 走看看