zoukankan      html  css  js  c++  java
  • 剑指OFFER18 判断一个二叉树的子树

    public class a18_IsSubTree {
    
        public static boolean hasSubTree(TreeNode treeRoot1, TreeNode treeRoot2) {
            boolean result = false;
            if (treeRoot1 != null && treeRoot2 != null) {
                if (treeRoot1.data == treeRoot2.data) {
                    result = DoesTree1HasTree2(treeRoot1, treeRoot2);
                }
                if (!result) {
                    result = hasSubTree(treeRoot1.left, treeRoot2);
                }
                if (!result)
                    result = hasSubTree(treeRoot1.right, treeRoot2);
    
            }
            return result;
        }
    
        private static boolean DoesTree1HasTree2(TreeNode treeRoot1, TreeNode treeRoot2) {
            if (treeRoot2 == null)
                return true;
            if (treeRoot1 == null)
                return false;
            if (treeRoot1.data != treeRoot2.data) {
                return false;
            }
            return DoesTree1HasTree2(treeRoot1.left, treeRoot2.left) && DoesTree1HasTree2(treeRoot1.right, treeRoot2.right);
    
        }
    
        public static void main(String[] args) {
            TreeNode tree1 = new TreeNode(1);
            TreeNode tree2 = new TreeNode(2);
            TreeNode tree3 = new TreeNode(3);
            TreeNode tree4 = new TreeNode(4);
            TreeNode tree5 = new TreeNode(5);
            TreeNode tree6 = new TreeNode(6);
            TreeNode tree7 = new TreeNode(7);
            TreeNode tree8 = new TreeNode(8);
            tree1.left = tree2;
            tree1.right = tree3;
            tree2.left = tree4;
            tree2.right = tree5;
            tree3.left = tree6;
            tree3.right = tree7;
            tree4.left = tree8;
    
            TreeNode tree11 = new TreeNode(2);
            TreeNode tree22 = new TreeNode(4);
            TreeNode tree33 = new TreeNode(8);
            tree11.left = tree22;
            tree22.left = tree33;
            System.out.println(hasSubTree(tree1, tree11));
    
        }
    
    }
    
    class TreeNode {
        int data;
        TreeNode left = null;
        TreeNode right = null;
    
        TreeNode(int data) {
            this.data = data;
        }
    }
  • 相关阅读:
    海康相机抓图使用OpencvSharp转换成Mat格式
    海康工业相机MVS抓图图像转HObject格式
    golang 图片上传HTTP服务
    python 程序打包 pyinstaller
    海康工业相机 MVS 抓图并转为Mat格式,支持彩色相机
    Qt QImage 与 Opencv Mat转换
    Qt 延时函数
    C/C++ 简单的Log日志
    Opencv3——通道分离与合并
    Opencv——Mat像素算术操作
  • 原文地址:https://www.cnblogs.com/todayjust/p/5421605.html
Copyright © 2011-2022 走看看