蓝色魅影 发表于 2020-3-24 14:27

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

本帖最后由 wushaominkk 于 2020-3-25 09:14 编辑

修改前和修改后的结果不一致,但不知道什么原因,有大佬能帮忙看下吗?修改部分的代码在图片里,下面代码是正确代码:
#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);
}


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

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
回归到代码本身, 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算法我还是第一次听到,我是初学者,才刚学到二叉树
页: [1]
查看完整版本: 最近在学数据结构,被一个递归算二叉树结点问题卡住了(已解决)