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


     

     
  • 相关阅读:
    java mybatis
    java influx DB工具类
    java redisUtils工具类很全
    java 任务定时调度(定时器)
    java 线程并发(生产者、消费者模式)
    java 线程同步、死锁
    Redis 集群版
    Redis 单机版
    linux下配置zookeeper注册中心及运行dubbo服务
    vue搭建前端相关命令
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3206647.html
Copyright © 2011-2022 走看看