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);
        }
    };
  • 相关阅读:
    移动端字体单位
    我像素的理解
    了解viewport概念
    移动端知识
    本地存储和会话存储
    一屏滚动滚轮事件
    关于jquery的笔记
    关于bind()方法
    [css] 滚动条样式问题
    [element-ui] 表格功能实现(删除选中)
  • 原文地址:https://www.cnblogs.com/wxisme/p/5295431.html
Copyright © 2011-2022 走看看