HB皓月 2023-11-09 20:10 采纳率: 80%
浏览 1
已结题

二叉树遍历输出时,函数直接跳过了。

在实现二叉树的各种操作中,采用先序遍历时出现问题:

#include<stdio.h>
#include<stdlib.h>
//#define NULL ((void *)0)
//using namespace std;
int K = 0; 
typedef struct treeNode{
    int num;
    treeNode *lchild;
    treeNode *rchild;
}treeNode,*viTree;
void InitviTree(viTree &T){            //初始化 
    T = (treeNode *)malloc(sizeof(treeNode));
    //T = new viTree;
    //T -> num = 0;
    T -> lchild = NULL;
    T -> rchild = NULL;
}
void createviTree(viTree T){        //创建 
    InitviTree(T); 
    int n;
    scanf("%d",&n);
    if(n != -1){
        //printf("kkk");
        //printf("%d",n) ;
        T -> num = n;
        //printf("%d",T->num);
        createviTree(T -> lchild);
        //printf("bbb");                 //调试语句 
        createviTree(T -> rchild);
        //printf("ccc");                 //调试 
        
    }
    else{
        //printf("ddd");
        T = NULL;
        return;
    }
}
void printviTree(viTree T){                          //出现问题
    if(T){
        return ;
    }
    else{
        K++;
        printf("第%d个数字为:%d\n",K,T->num);
        printviTree(T->lchild);
        printviTree(T->rchild);
    }
}
int firstFindTree(viTree T,int k){    //出现问题
    if(T != NULL){
        K++;
        if(K == k){
            return T -> num;
        }
        else{
            firstFindTree(T -> lchild,k);
            firstFindTree(T -> rchild,k);
        }
    }    
}
int main(){
    viTree Tree;
    //InitviTree(&Tree);
    printf("请输入二叉树:\n");
    createviTree(Tree);
    printf("二叉树为:\n");
    printviTree(Tree);
    int k;
    /*printf("请输入要查询的位置:"); 
    scanf("%d",&k);
    printf("第%d个位置的值为%d",k,firstFindTree(Tree,k));*/
} 

在创建后,遍历二叉树准备输出时,在控制台直接结束了程序,debug时在printviTree这一条直接跳过去了,然后程序就结束了。
求解答问题。

  • 写回答

2条回答 默认 最新

  • HB皓月 2023-11-12 17:23
    关注

    原因在于利用创建createviTree时没有取树的作为指针所指向的地址,在赋值时没有成功,导致树一直为NULL,所以在后续遍历时判断时直接退出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月9日

悬赏问题

  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 centos7系统下abinit安装时make出错