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

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

    【思路】首先我们整理下这道题目的思路,首先我们去遍历二叉树A,然后去寻找与二叉树根节点相同的节点,这里我们也使用递归的方法!当找到相同节点后,我们再开始判断从这两个相同节点出发的两棵树是否为子树关系!在判断时,仍然使用递归的思路去遍历,如果root2遍历完了,那么返回true,说明二叉树B是二叉树A的子树。如果root1遍历完了,则返回false,同时必须满足遍历的节点必须相同!

     1/*
     2struct TreeNode {
     3    int val;
     4    struct TreeNode *left;
     5    struct TreeNode *right;
     6    TreeNode(int x) :
     7            val(x), left(NULL), right(NULL) {
     8    }
     9};*/
    10class Solution {
    11public:
    12    bool isSubtree(TreeNode* root1, TreeNode* root2){
    13        if(root2 == nullptr)
    14            return true;
    15        if(root1 == nullptr)
    16            return false;
    17        return (root1->val == root2->val) && 
    18            isSubtree(root1->left, root2->left) && isSubtree(root1->right, root2->right);
    19    }
    20
    21    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    22    {
    23        if(pRoot1 == nullptr || pRoot2 == nullptr){
    24            return false;
    25        }
    26        bool result = false;
    27        if(pRoot1->val == pRoot2->val){
    28            result = isSubtree(pRoot1, pRoot2); 
    29        }
    30        if(!result){
    31            result = HasSubtree(pRoot1->left, pRoot2)
    32                  || HasSubtree(pRoot1->right, pRoot2);
    33        }
    34        return result;
    35    }
    36};
  • 相关阅读:
    javascript运行机制
    ios-scroll 和系统设置overflowscroll后卡顿
    input属性autocomplate背景颜色
    img 的onload事件和complate事件区别
    image图片之间缝隙bug解决方法
    gulp使用指南
    getQueryString
    decodeURI()和decodeURIComponent()函数
    css样式实现水平方向滚动
    I2C
  • 原文地址:https://www.cnblogs.com/zhudingtop/p/11329153.html
Copyright © 2011-2022 走看看