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 }
  • 相关阅读:
    python
    weui 问题
    Mac 问题
    ORM存储过程和实体类代码生成工具
    说说QQ空间SEO
    用户体验走嘴和走心的区别
    一切不以用户为中心的O2O 都是耍流氓
    10分钟制作自己的手机QQ
    一无所有其实没什么
    别人的鞋不一定合脚
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4616310.html
Copyright © 2011-2022 走看看