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);
    	}
    

  • 相关阅读:
    unity 凸多形顶点排序
    unity Plane
    Git MAC电脑Git使用
    Spine运行库指南
    VsCode TypeScritp整理Import
    TypeScript 扩展声明文件 .d.ts
    UnityEditor 编辑多个场景里的对象,Revert 预制件实例
    unity 球形插值
    研究生基础咨询
    ACSM-CPT 考试资料
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779964.html
Copyright © 2011-2022 走看看