| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1198 人关注过本帖
标题:简单计算二叉树各结点data的和
取消只看楼主 加入收藏
三尺冰
Rank: 2
等 级:论坛游民
帖 子:17
专家分:50
注 册:2019-10-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
简单计算二叉树各结点data的和
程序代码:
#include<stdio.h>
#include<stdlib.h>

/**
*简单地创建一棵树
*三个函数: 1.先序遍历创建树,-1作为空指针标志
*      2.输出先序遍历序列
*      3.计算所有结点data域的和
*在main函数中声明指向根结点的指针变量
*并输出和sum
*/

typedef struct tree
{
    int data;
    struct tree *lchild, *rchild;
}Tree;      //结构体声明
   

int main()
{

    void createTree(Tree *t);
    int calSum(Tree *t);
    void dispTree(Tree *t);     //函数声明

    Tree *t;       

   

    int sum;
    createTree(t);
    sum = calSum(t);
    dispTree(t);       

    printf("%d\n", sum);    //创建、计算sum、输出先序序列和输出sum

    return 0;
}

void createTree(Tree *t)
{
    int x;
    scanf("%d", &x);
    if(x == -1)
        t = NULL;
    t = (Tree *)malloc(sizeof(Tree));
    t->data = x;
    createTree(t->lchild);
    createTree(t->rchild);
}

int calSum(Tree *t)
{
    if(!t)  return 0;
    return calSum(t->lchild) + calSum(t->rchild) + t->data;
}

void dispTree(Tree *t)
{
    if(t)
    {
        printf("%d  ", t->data);
        dispTree(t->lchild);
        dispTree(t->rchild);
    }
}

问题在于数据输入结束后无响应
测试数据:2 3 -1 6 -1 -1 9 -1 -1
数据输完不会结束,输入非数字数据,程序崩溃。
递归用的可能不熟,诚心请教!
搜索更多相关主题的帖子: data tree int 结点 sum 
2019-11-11 23:47
三尺冰
Rank: 2
等 级:论坛游民
帖 子:17
专家分:50
注 册:2019-10-22
收藏
得分:0 
CreateTree函数是递归进行的,每次递归也只是用实参的副本,为什么还是要
使用t的二级指针呢?


天道酬勤,自强不息
2019-11-15 12:31
快速回复:简单计算二叉树各结点data的和
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016316 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved