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

    题目描述

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     
    思路:树结构,本能想到递归,判断是否为子结构,则需要递归每个节点,于是写一个判断是否是字数结构的函数,再对左右节点递归遍历。
    这里有一个点,在判断是否为子结构的时候,结束条件有先后之分,应该先判断子树是否已经为空,如果为空则说明节点与父树一一对应,则
    返回真。
     
    代码:
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        bool issubtree(TreeNode* p1, TreeNode* p2){
            if(p2 == nullptr) return true;
            if(p1 == nullptr) return false;
            if(p1 -> val == p2 -> val){
                return issubtree(p1 -> left, p2 -> left)
                    && issubtree(p1 -> right, p2 -> right);
            }else
            return false;
        }
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
            if(pRoot2 == nullptr || pRoot1 == nullptr) return false;
            return HasSubtree(pRoot1 -> left, pRoot2) || HasSubtree(pRoot1 -> right, pRoot2)
                || issubtree(pRoot1, pRoot2);
        }
    };
  • 相关阅读:
    hive高阶函数和采样-优化
    zookeeper搭建
    hive常用函数和建表
    hive常用函数-建表-jdbc
    hadoop远程调试和配置HA
    hadoop-MR-排序
    python spark
    jenkins安装
    beetlsql
    spark页面单跳转化率
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12722022.html
Copyright © 2011-2022 走看看