• 剑指offer:树的子结构


    题目描述:

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

    思路:

    1、首先设置标志位result = false,因为一旦匹配成功result就设为true,
    剩下的代码不会执行,如果匹配不成功,默认返回false
    2、递归思想,如果根节点相同则递归调用DoesTree1HaveTree2(),
    如果根节点不相同,则判断tree1的左子树和tree2是否相同,
    再判断右子树和tree2是否相同
    3、注意null的条件,HasSubTree中,如果两棵树都不为空才进行判断,
    DoesTree1HasTree2中,如果Tree2为空,则说明第二棵树遍历完了,即匹配成功,
    tree1为空有两种情况(1)如果tree1为空&&tree2不为空说明不匹配,
    (2)如果tree1为空,tree2为空,说明匹配。

     1 public class TreeZijiegou {
     2     public boolean HasSubtree(TreeNode root1,TreeNode root2) {    
     3          boolean result = false;
     4        // if(root1 == null || root2 == null) result = false;
     5         if(root1!=null&&root2!=null){
     6             if(root1.val == root2.val){
     7                 result = Xiangdeng(root1, root2);
     8             }
     9             if(!result){
    10                 result = HasSubtree(root1.left, root2);
    11             }
    12             if(!result){
    13                 result = HasSubtree(root1.right, root2);
    14             }
    15         }
    16         return result;
    17     }    
    18     public boolean Xiangdeng(TreeNode root1,TreeNode root2){
    19         //boolean res = false;
    20         
    21         if(root2 == null) return  true;
    22         if(root1 == null) return  false;
    23         if(root1.val != root2.val) return  false;
    24         return Xiangdeng(root1.left, root2.left)&&Xiangdeng(root1.right, root2.right);
    25     }
    26     public static void main(String[] args) {
    27         // TODO Auto-generated method stub
    28 
    29     }
    30 
    31 }
  • 相关阅读:
    MySQL 幻读详解
    vue-layer 弹窗z-index问题
    vue-cli 路径不变 改变参数 显示不同组件
    mysql ---- limit使用方式
    mysql ---- 官网的测试数据库
    2020年度总结和2021年目标
    校招(春招实习 + 秋招)总结感想
    Centos8和7的区别(参照redhat)
    centos8 网卡命令(centos7也可用)
    排查linux系统是否被入侵
  • 原文地址:https://www.cnblogs.com/zlz099/p/8649449.html
Copyright © 2020-2023  润新知