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

    算法描述: 输入两棵树,判断A是不是B的子结构

    解题思路:首先在B中寻找与A根节点的值相同的节点,然后从该节点入手判断接下来的二叉树是否相同很显然用地递归来实现具体算法如下:

    // binaryTree.cpp : 定义控制台应用程序的入口点。
    
    #include "stdafx.h"
    #include <iostream> 
    #include <string>
    using namespace std;
    struct binaryNode
    {
    	int data;
    	binaryNode *left;
    	binaryNode *right;
    };
    bool isSame(binaryNode *p1,binaryNode *p2)
    {
    	if(p1==NULL &&p2!=NULL)
    	{
    		return false;
    	}
    	if(p2==NULL)
    	{
    		return true;
    	}
    	if(p1->data!=p2->data)
    	{
    		return false;
    	}else
    	{
    		return isSame(p1->left,p2->left) && isSame(p1->right,p2->right);
    	}
    }
    bool subTree(binaryNode *p1,binaryNode *p2)
    {
    	if(p1==NULL)
    	{
    		return false;
    	}
    	bool isRight=false;
    	if(p1->data==p2->data)
    	{
    		isRight=isSame(p1,p2);
    		if(!isRight)
    		{
    			isRight=subTree(p1->left,p2);
    		}
    		if(!isRight)
    		{
    			isRight=subTree(p1->right,p2);
    		}
    	}
    	return isRight;
    }
    bool isSubtree(binaryNode *p1,binaryNode *p2)
    {
    	if(p1==NULL || p2==NULL)
    	{
    		throw new exception("the input is error");
    	}
    	return subTree(p1,p2);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	getchar();
    	return 0;
    }
    
    


     

     
  • 相关阅读:
    yum源服务器搭建
    hadoop常用的端口配置
    yarn组建端口
    linux上go环境配置
    mysql主从复制
    一篇比较好的F5配置介绍
    统计随机数出现个数与直方图显示的C实现
    [LinuxC-笔记1]
    [转]达夫设备(Duff's device)
    [转]Ubuntu 18.04设置1920*1080
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3206647.html
Copyright © 2011-2022 走看看