zoukankan      html  css  js  c++  java
  • 剑指offer-树的子结构

    题目描述

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

    /**
         * 基本思路:1.判断树A和树B是否有相同的根结点 2.如果存在,判断A的子树是否和B树结构相同 3.如果不存在,A树向下遍历,重复步骤1,2
         * 注意null的条件,hasSubTree中,如果两棵树都不为空才进行判断,
         * doesTree1HasTree2中,如果B树为空,则说明B树遍历完了,即匹配成功,
         * A树为空有两种情况(1)如果A树为空&&B树不为空说明不匹配,
         *                 (2)如果A树为空,B树为空,说明匹配。
         * @param root1 A树
         * @param root2 B树
         * @return
         */
        public boolean hasSubTree(BinaryTreeNode root1, BinaryTreeNode root2) {
    
            boolean result = false;
            if (root1 != null && root2 != null) {
                // 根节点相等,递归判断A中的以某个节点为根节点的子树是不是和树B具有相同的结构
                if (root1.value == root2.value) {
                    result = doesTree1HasTree2(root1, root2);
                }
                // 未匹配成功,A树向左子树递归查找与B树根节点相等的根结点
                if (!result) {
                    result = hasSubTree(root1.left, root2);
                }
                // 未匹配成功,A树向右子树递归查找与B树根节点相等的根结点
                if (!result) {
                    result = hasSubTree(root1.right, root2);
                }
    
            }
            return result;
    
        }
    
        private boolean doesTree1HasTree2(BinaryTreeNode root1, BinaryTreeNode root2) {
    
            // 递归到root2为空,说明B树是A树的子树
            if (root2 == null)
                return true;
            
            if (root1 == null) {
                return false;
            }
            // 结点值不相同,肯定不是子树
            if (root1.value != root2.value) {
                return false;
            }
    
            return doesTree1HasTree2(root1.left, root2.left)
                    && doesTree1HasTree2(root1.right, root2.right);
        }
  • 相关阅读:
    如何使用idea创建一个java项目
    IntelliJ IDEA 下载安装配置教程
    使用cmd命令输出Hello word
    用js引入css,减少http请求次数,提高响应速度,
    mysql order by limit出现数据丢失问题
    被ASP.NET GridView checkbox选择逼疯的朋友们,请放下你手中的割腕刀
    分发计数器
    mysql 操作
    code site 例子
    kjj
  • 原文地址:https://www.cnblogs.com/zywu/p/5772619.html
Copyright © 2011-2022 走看看