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

    题目:输入两颗二叉树A,B,判断B是不是A的子结构。

    思路:题目的意思就是判断B是不是A的一部分,B是不是A的子树。遇到二叉树的问题首先想到用递归来解决。首先需要找个树A的一个节点p,使得p和B的头结点的值相等,然后判断p的左子树是不是等于B的左子树,p的右子树是不是等于B的右子树,如果相等说明B是A的子结构,相反如果在A树遍历完还没有找到和B

    相等的子结构,那么可以说B不是A的子结构。

    实现代码:

    class Solution {
        bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) {
            if (pRootB == NULL) return true;
            if (pRootA == NULL) return false;
            if (pRootB->val == pRootA->val) {
                return isSubtree(pRootA->left, pRootB->left)
                    && isSubtree(pRootA->right, pRootB->right);
            } else return false;
        }
    public:
        bool HasSubtree(TreeNode* pRootA, TreeNode* pRootB)
        {
            if (pRootA == NULL || pRootB == NULL) return false;
            return isSubtree(pRootA, pRootB) ||
                HasSubtree(pRootA->left, pRootB) ||
                HasSubtree(pRootA->right, pRootB);
        }
    };
  • 相关阅读:
    linux命令学习之:cd
    SSH原理与运用
    java遍历当前会话所有Session
    spring+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
    python检测编码
    python安装模块
    python网络爬虫
    系统编码 python编码
    python 中文路径
    python读取文件乱码
  • 原文地址:https://www.cnblogs.com/wxisme/p/5295431.html
Copyright © 2011-2022 走看看