zoukankan      html  css  js  c++  java
  • 树二:树的子结构

    /**
     * 题目:树的子结构
     * 描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     * 解决方案:思路: 1.是子树分为三种情况①当前结点已经是子树了,②当前结点左孩子存在子树③当前结点右孩子存在子树
     *     2.判断是否是子树必须满足:结点值相等,左右节点的值也相等。

     *  从根节点开始,判断两个节点是否符合条件, 然后根节点的左子树、根节点的右子树; 
     * */

    public class Two {
            
        public static boolean hasSubTree(TreeNode tree1,TreeNode tree2) {
                if(tree1 == null || tree2 == null) {
                    return false;
                }
            return isSubTree(tree1, tree2)|| hasSubTree(tree1.left, tree2)  ||  hasSubTree(tree1.right,tree2);
        }
        public static boolean isSubTree(TreeNode tree1,TreeNode tree2) {
            if(tree2 == null) {
                return false;  //空树不是任意一个树的子结构  ,如果约定空树是子结构,返回true
            }
            if(tree1 == null) {
                return false;
            }
            if(tree1.var == tree2.var) {
                return isSubTree(tree1.left, tree2.left) && isSubTree(tree1.right,tree2.right);
            }else {
                return false;
            }
        }
    
        static class TreeNode{
            int var;
            TreeNode left;
            TreeNode right;
        }
    
    }
    天助自助者
  • 相关阅读:
    3.3 React Hooks
    ES6高阶函数
    ES6扩展运算符
    4.0不用npm,cnpm。使用yarn包启动react项目
    4.3 webpack打包学习
    4.2 Node.js模块化教程
    4.1React模块化
    vue组件化开发
    js箭头函数
    weblogic_exploit
  • 原文地址:https://www.cnblogs.com/ZeGod/p/9969476.html
Copyright © 2011-2022 走看看