zoukankan      html  css  js  c++  java
  • 面试题18:树的子结构

    题目:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:

    struct BinaryTreeNode
    {
          int val;
          BinaryTreeNode* left;
          BinaryTreeNode* right;
    };

    例如下图中的两棵树,由于A中有一部分树的结构和B是一样的,因此B是A的子结构。

     1 bool doesTree1HaveTree2(BinaryTreeNode* root1, BinaryTreeNode* root2)
     2 {//判断root2是否为root1的前缀
     3     if (root1 == NULL)
     4         return false;
     5     if (root2 == NULL)
     6         return true;
     7     if (root1->val!=root1->val)
     8         return false;
     9     return doesTree1HaveTree2(root1->left, root2->left) && doesTree1HaveTree2(root1->right, root2->right);    
    10 }
    11 bool hasSubTree(BinaryTreeNode* root1, BinaryTreeNode* root2) 12 { 13 if (root1 == NULL) 14 return false; 15 if (root2 == NULL) 16 return true; 17 bool result = false; 18 if (root1->val == root2->val) 19 result = doesTree1HaveTree2(root1,root2); 20 if (!result) 21 result = hasSubTree(root1->left, root2) || hasSubTree(root1->right, root2); 22 return result; 23 }
  • 相关阅读:
    react引用antd的form表单
    前端学习之--谷歌浏览器使用
    react引用ant的table组件
    git 提交解决冲突
    git将本地仓库推送到远程仓库
    操作DOM
    javaScript基础篇之数据类型
    css之水平居中设置
    css之颜色值、单位
    CSS属性简写
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4616310.html
Copyright © 2011-2022 走看看