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

    子树的意思是包含了一个结点,就得包含这个结点下的所有节点,一棵大小为n的二叉树有n个子树,就是分别以每个结点为根的子树。子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。
    直接上代码。这解释起来也蛋疼。


    一.一个二叉树树是另一二叉树的子结构。


    class Solution:
    	public:
    	bool isSubtree(TreeNode* pRoot1,TreeNode* pRoot2)
    	{
    	   if(!pRoot2)return true;//相等于pRoot2结点比对完成
    	   if(!pRoot1)return false;//pRoot1比对结束
    	   if(pRoot2->val==pRoot2->val)
    	   {
    	   return isSubtree(pRoot1->left,pRoot2->left)&&isSubtree(pRoot1->right,pRoot2->right);
    	   }else
    	   {
    	   return false;
    	   }
    	}
    	bool HasSubtree(TreeNode* pRoot1,TreeNode* pRoot2)
    	{
    	    if(!pRoot1)return false;
    	    if(!pRoot2)return false;
    	   return isSubtree(pRoot1,pRoot2)||HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);
    	}
    	}
    	
    

    二.一个二叉树是另一个二叉树的子树,代码需要轻微的改动

    class Solution:
    	public:
    	bool isSubtree(TreeNode* pRoot1,TreeNode* pRoot2)
    	{
    	   if(!pRoot1&&!pRoot2)return true;
    	   else return false;
    	   if(pRoot2->val==pRoot2->val)
    	   {
    	   return isSubtree(pRoot1->left,pRoot2->left)&&isSubtree(pRoot1->right,pRoot2->right);
    	   }else
    	   {
    	   return false;
    	   }
    	}
    	bool HasSubtree(TreeNode* pRoot1,TreeNode* pRoot2)
    	{
    	    if(!pRoot1)return false;
    	    if(!pRoot2)return false;
    	   return isSubtree(pRoot1,pRoot2)||HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);
    	}
    

  • 相关阅读:
    TCP建立连接三次握手和释放连接四次握手
    集群/分布式环境下5种session处理策略
    MySQL两种引擎的区别
    【深入理解JVM】:类加载器与双亲委派模型
    Spring Cloud组件完整
    用Redis轻松实现秒杀系统
    分布式锁的基本原理
    中文分词-jieba
    win10安装mysql5.7.20解压版
    tenaorflow函数(1)
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779964.html
Copyright © 2011-2022 走看看