zoukankan      html  css  js  c++  java
  • 剑指offer---17--****-(递归)树的子结构

     
    题意
     
    分析
    方法一
    分为两步走:另外写一个函数,这个函数用在当根节点的参数值相同的情况下,判断第一个树是否包含了第二个树
    1.判断当前点是否相同,如果相同就去比较左右子树是否相同
    2.如果当前节点不相同,那么就去比较左子树是否包含第二棵树。
     
     
    代码
    /**
    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) {
            if(root1==null || root2==null)return false;
            boolean result = false;
            //如果根节点相等,比较是否是包含关系
            if(root1.val == root2.val){
                result = doesTree1HaveTree2(root1,root2);
            }
            //然后判断如果根节点参数值不相等
            if(result==false){
                result = HasSubtree(root1.left,root2);
            }
            if(result == false){
                result = HasSubtree(root1.right,root2);
            }
            return result;
        }
        
        //这个函数表示当根节点相同的情况下,左右子树是否匹配。
        public boolean doesTree1HaveTree2(TreeNode root1,TreeNode root2){
               if(root2 == null)return true;//已经匹配完了,就是第二棵树已经结束了
            if(root1 == null)return false;//还没有匹配完
            if(root1.val != root2.val)return false;
            return doesTree1HaveTree2(root1.left,root2.left)&&doesTree1HaveTree2(root1.right,root2.right);
        }
    }
  • 相关阅读:
    [转载]宇宙文明等级的划分标准
    常用的AJAX框架
    常用的AJAX框架
    【★】路由环路大总结!
    分销商城

    如何开始做外贸
    时间管理模型
    吕广渝:上帝视角看公司运营
    Java面试必问
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9377065.html
Copyright © 2011-2022 走看看