zoukankan      html  css  js  c++  java
  • [leetCode]剑指 Offer 26. 树的子结构

    在这里插入图片描述

    解法递归

    求解过程可以分为两步:
    1. 遍历A中节点,找到与B中根节点相同的节点
    第一步可以使用递归实现线序遍历
    2. 判断是否存在相同的结构
    第二步可以可以使用递归判断A、B左右子树结构是否相同

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean isSubStructure(TreeNode A, TreeNode B) {
            boolean result = false;
            if(A != null && B != null){
                if(A.val == B.val){
                    result = doseTreeAHasTreeB(A, B);
                }
                if(!result)
                    result = isSubStructure(A.left, B);
                if(!result)
                    result = isSubStructure(A.right,B);
            }
            return result;
        }
    
        private boolean doseTreeAHasTreeB(TreeNode A, TreeNode B){
            if(B == null)
                return true;
            if(A == null)
                return false;
            if(A.val != B.val)
                return false;
            return doseTreeAHasTreeB(A.left,B.left) && doseTreeAHasTreeB(A.right, B.right);
        }
    }
    
  • 相关阅读:
    iou与giou对比
    Linux学习第一天 vim
    奖励加分申请
    人月神话阅读笔记3
    5.27
    5.26
    5.25
    5.23
    5.22
    5.21
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859964.html
Copyright © 2011-2022 走看看