zoukankan      html  css  js  c++  java
  • 剑指Offer:面试题18——树的子结构(java实现)

    问题描述:

    输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }

    思路1:

    递归

    public static boolean HasSubtree(TreeNode root1,TreeNode root2) {
            boolean result = false;
    
            if(root1 != null && root2 != null){
    
                if(root1.val == root2.val){
                    result = DoesTree1HaveTree2(root1, root2);
                }
    
                if(!result){
                    result = HasSubtree(root1.left, root2);
                }
    
                if(!result){
                    result = HasSubtree(root1.right, root2);
                }
            }
    
            return result;
        }
    
        public static 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);
        }
  • 相关阅读:
    一. js高级(1)-面向对象编程
    tips01- 定位
    h5c3 part6 flex
    h5c3 part5 background and transform
    template and pagination
    h5c3 part4
    h5c3 part3
    h5c3 part2
    h5c3 part1
    学习博客
  • 原文地址:https://www.cnblogs.com/wenbaoli/p/5655717.html
Copyright © 2011-2022 走看看