• 剑指offer 树的子结构


    题目描述

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     
     
    题目思路:
    可以分两步:
    1)先找到A中和B根节点的值相等的节点R
    2)判断树A中以R为根节点的子树是否包含和树B一样的结构。
     
    特别注意:要访问地址的时候,一定要考虑为NULL的时候该怎么处理。
     
     1 /*
     2 struct 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 };*/
    10 class Solution {
    11 private:
    12     bool Equal(double num1, double num2) {
    13         double subtract = num1 - num2;
    14         return (subtract > -1e-8 && subtract < 1e-8);
    15     }
    16     bool DoesTree1HasTree2(TreeNode* pRoot1, TreeNode* pRoot2) {
    17         //考虑是否先判断pRoot1 == NULL ?
    18         //不能先简单判断pRoot1 == NULL就返回false, 因为可能pRoot2也为NULL,这是true
    19         if (pRoot2 == NULL)
    20             return true;
    21         if (pRoot1 == NULL)
    22             return false;
    23         if (!Equal(pRoot1->val, pRoot2->val))
    24             return false;
    25         return DoesTree1HasTree2(pRoot1->left, pRoot2->left) && DoesTree1HasTree2(pRoot1->right, pRoot2->right);
    26     }
    27 public:
    28     bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    29     {
    30         bool flag = false;
    31         if (pRoot1 != NULL && pRoot2 != NULL) {
    32             if (Equal(pRoot1->val, pRoot2->val)) {
    33                 flag = DoesTree1HasTree2(pRoot1, pRoot2);
    34             }
    35             if (!flag) {
    36                 flag = HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
    37             }
    38         }
    39         return flag;
    40     }
    41 };
  • 相关阅读:
    HTTP下载文件校验失败原因分析与解决
    读《软件测试的艺术》
    CXF wsdl2java 错误
    oracle 存储过程 多参数 多返回值
    ORACLE 函数 调用
    typescript学习入门(学习笔记)
    js常用方法总结
    jenkins安装及项目构建发布回滚
    Centos8中创建LVM精简逻辑卷
    k8s kubectl命令自动补全
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11288239.html
Copyright © 2020-2023  润新知