打印二叉搜索树的叶子结点_求孩子兄弟树叶子节点数目

7a7ef534648b4797de3de01a2496e5f5.png记得点击蓝字关注叉酱哦!题目:求孩子-兄弟树叶子节点数目TREE什么是孩子-兄弟树?

        孩子兄弟表示法模型,每个结点都有一个指向其第一个孩子的指针,每个结点都有一个指向其第一个右兄弟的指针 。

算法思想:

    在递归在孩子与兄弟中找叶子结点,找到i++,并返回;

样例调试

输入

A

B

#

C

D

#

#

E

#

#

#

输入2

A

B

#

C

F

H

I

#

#

#

G

#

#

D

#

E

#

#

#

源代码
#includeusing namespace std;#define TElemType chartypedef struct TreeNode{    TElemType data;    struct TreeNode *firstchild,*nextbrother;}TreeNode,*Tree;int CreateTree(Tree &T){  char ch;  cin>>ch;//输入  if(ch=='#')    {    T=NULL;  }  else    {    T=(Tree)malloc(sizeof(TreeNode));    if(!T)         {            cout<<"内存分配错误!!"<<endl;            exit(0);        }    T->data=ch;        cout<<"输入"<"的孩子(#为没有):";    CreateTree(T->firstchild);//有孩子结点,先创建孩子树        cout<<"输入"<"的兄弟(#为没有):";    CreateTree(T->nextbrother);//再创建兄弟的树  }  return 0;}//叶子节点数目int LeftNum(Tree T,int &i){    if(T)    {        if(!T->firstchild&&!T->nextbrother)        {            // cout<data<            i++;        }        LeftNum(T->firstchild,i);        LeftNum(T->nextbrother,i);    }    return i;}int main(){    Tree T;    int i;  cout<<"请输入孩子兄弟树(#为没有):";  CreateTree(T);  cout<<"树创建成功!"<<endl;    LeftNum(T,i);  cout<<"树的叶子数为:"<endl;    system("pause");}
结果分析

时间复杂度为O(nlog(n))

7d9a922065c3b0ea183d741554c57543.pngEND 5a63502d73563dbedc0bb4e7558b8362.png a25ce5828650aee4dd6d7c4192a6dba4.png扫码关注叉酱二叉树和叉酱呀!!! 6ae1c8a36d2ecdb15ebcca778cff0d3e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值