吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1754|回复: 9
收起左侧

[其他转载] 最近在学数据结构,被一个递归算二叉树结点问题卡住了(已解决)

[复制链接]
蓝色魅影 发表于 2020-3-24 14:27
本帖最后由 wushaominkk 于 2020-3-25 09:14 编辑

修改前和修改后的结果不一致,但不知道什么原因,有大佬能帮忙看下吗?修改部分的代码在图片里,下面代码是正确代码:
[C] 纯文本查看 复制代码
#include <iostream>
#include <stdlib.h>
using namespace std;


struct BiTNode{
        char data;
        BiTNode *lchild;
        BiTNode *rchild;
};


void creat(BiTNode *&T)
{
        char ch;
        cin>>ch;
        if(ch=='#') T=NULL;
        else
        {
                T = new BiTNode;
                T->data = ch;
                creat(T->lchild);
                creat(T->rchild);
        }
}


int nodeCount(BiTNode *T)
{
        if(T==NULL) return 0;
        return nodeCount(T->lchild)+nodeCount(T->rchild)+1;
} 


int leafCount(BiTNode *T)
{
        if(T==NULL) return 0;
        if(T->lchild==NULL && T->rchild==NULL) return 1;
        return leafCount(T->lchild)+leafCount(T->rchild);
}


int oneDegree(BiTNode *T)
{
        if(T==NULL) return 0;
        if((T->lchild==NULL && T->rchild!=NULL)||
        (T->lchild!=NULL && T->rchild==NULL)) return 1;
        return oneDegree(T->lchild)+oneDegree(T->rchild);
} 


void  preOrder(BiTNode *T)
{
        if(T){
                cout << T->data;
                preOrder(T->lchild);
                preOrder(T->rchild);
        }
}


int main()
{
        BiTNode *T;
        creat(T);
        preOrder(T);
        cout << endl;
        cout << "结点数:" << nodeCount(T) << endl;
        cout << "叶子数:" << leafCount(T) << endl; 
        cout << "度为1结点数:" << oneDegree(T) << endl;
        return 0;
}

错误递归代码

错误递归代码

正确递归代码

正确递归代码

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
gaoyuan1234 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
KamiMao 发表于 2020-3-24 14:52
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
KamiMao 发表于 2020-3-24 14:55
头像被屏蔽
KamiMao 发表于 2020-3-24 14:59
gaoyuan1234 发表于 2020-3-24 14:59
不懂,在我心里,你们都是大神。
 楼主| 蓝色魅影 发表于 2020-3-24 15:04
KamiMao 发表于 2020-3-24 14:59
回归到代码本身,[mw_shl_code=cpp,true] if(T==NULL) return 0;
        return nodeCount(T->lchild)+no ...

嗯 我后来也发现了 修改后的代码只算左子树没有算右子树 最后面那句根本不会执行
 楼主| 蓝色魅影 发表于 2020-3-24 15:05
KamiMao 发表于 2020-3-24 14:55
if(判断){
return ...
}else if(判断){

嗯,有时候为了涂个简洁方便就简化了很多代码
star0angel 发表于 2020-3-24 15:20
又不注释  乱  看不懂
我不是药神 发表于 2020-3-24 16:26
我最近也在学数据结构,那个kmp算法有点懵,楼主传授一下经验??
 楼主| 蓝色魅影 发表于 2020-3-24 17:38
我不是药神 发表于 2020-3-24 16:26
我最近也在学数据结构,那个kmp算法有点懵,楼主传授一下经验??

kmp算法我还是第一次听到,我是初学者,才刚学到二叉树
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表