| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 316 人关注过本帖
标题:遗传算法求最优解的二叉树出现问题,出现堆栈溢出,求大神解释
取消只看楼主 加入收藏
纪老猴子zxy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
遗传算法求最优解的二叉树出现问题,出现堆栈溢出,求大神解释
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct BiTreeNode BiTreeNode ;
struct BiTreeNode
{
    char data;
    BiTreeNode *lchild;
    BiTreeNode *rchild;
};

void Intraverse (BiTreeNode *p_Root);
BiTreeNode* Create (BiTreeNode *p_Node,char *a);

int count = 0;

int main ()
{
    char a[17]={"+-*/^LSCEOTS1234"};
    BiTreeNode *p_Root[3] = {NULL};
    int i = 0;
    
    srand (time (NULL));

    for (i = 0;i<3;i++)
    {
        p_Root[i] = Create (p_Root[i],a);
    }
    
    for (i = 0;i<3;i++)
    {
        Intraverse (p_Root[i]);
        putchar (10);
        printf (",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,");
        putchar (10);
    }
    printf ("%d ",count);//count用来统计递归次数;

    system ("pause");
    return 0;
}

BiTreeNode* Create (BiTreeNode *p_Node,char *a)
{
    count++;
    printf ("count = %d\n",count);//输出当前递归次数;

    long r = 0;

 
    r = rand();
    r = r%16;
    
    printf ("%d\n",r);

    if (p_Node != NULL)
    {
        return p_Node;
    }
    else
    {
        p_Node = (BiTreeNode*) malloc (sizeof (BiTreeNode));
    
        if (p_Node == NULL)
        {
            printf ("内存分配错误");
            system ("pause");
            exit (1);
        }
        else
        {
            p_Node->lchild = p_Node->rchild = NULL;
            p_Node->data = a[r];
            
            //加减乘除需要运算左右子树;
            if (r<=4 && r>=0)
            {
                p_Node->lchild = Create (p_Node->lchild,a);
                p_Node->rchild = Create (p_Node->rchild,a);
            }
            else if (r>= 5 && r<= 11)
            {
                //log sin cos tan exp cot仅仅运算左子树;
                p_Node->lchild = Create (p_Node->lchild,a);
            }
            return p_Node;
        }
    }
}

void Intraverse (BiTreeNode *p_Root)
{
    if (p_Root)
    {
        Intraverse (p_Root->lchild);
        
        printf (" %c ",p_Root->data);
        
        Intraverse (p_Root->rchild);
    }
}
        

搜索更多相关主题的帖子: 二叉树 
2014-12-28 11:38
快速回复:遗传算法求最优解的二叉树出现问题,出现堆栈溢出,求大神解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036427 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved