码迷,mamicode.com
首页 > 其他好文 > 详细

Swust OJ973: 统计利用先序遍历创建的二叉树叶结点的个数

时间:2020-04-12 12:42:02      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:des   rip   include   利用   malloc   str   create   copy   int   

题目简述

利用先序递归遍历算法创建二叉树计算该二叉树叶结点的个数

输入

接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。

输出

输出对应的二叉树叶结点的个数。

样例输入复制

ABCD###EF##G###
A##B##
#A

样例输出复制

3
Step One:先序递归遍历算法创建二叉树
void CreateTree(BiTree *&tree)
 {
     char ch;
     cin>>ch;
     if(ch==#)
         tree=NULL;
     else
     {
         tree=(BiTree*)malloc(sizeof(BiTree));
         tree->data=ch;
         CreateTree(tree->lchild);
         CreateTree(tree->rchild);
         
     }
 }

Step Two:二叉树的叶结点

叶子结点 :度为0的结点, 即没有子结点的结点.

即当某结点既没有左孩子也没有右孩子时,可知该结点为二叉树的叶结点

 

void LeafCount(BiTree *&tree)
{
    if(tree!=NULL)
    {
        if(tree->lchild==NULL&&tree->rchild==NULL)
//左右孩子结点为空时,该结点为叶子结点
            count++;
        if(tree->lchild!=NULL)
            LeafCount(tree->lchild);
//当左孩子结点不为空时,继续调用递归函数判断左孩子结点是否为叶子结点
        if(tree->rchild!=NULL)
            LeafCount(tree->rchild);
    }
}

 

 

 

完整代码:

 

#include<iostream>
#include<malloc.h>
int count=0;
using namespace std;
typedef struct node
{
    char data;
    struct node *lchild,*rchild;
 }BiTree;
 void CreateTree(BiTree *&tree)
 {
     char ch;
     cin>>ch;
     if(ch==#)
         tree=NULL;
     else
     {
         tree=(BiTree*)malloc(sizeof(BiTree));
         tree->data=ch;
         CreateTree(tree->lchild);
         CreateTree(tree->rchild);
         
     }
 }
 
void LeafCount(BiTree *&tree)
{
    if(tree!=NULL)
    {
        if(tree->lchild==NULL&&tree->rchild==NULL)
            count++;
        if(tree->lchild!=NULL)
            LeafCount(tree->lchild);
        if(tree->rchild!=NULL)
            LeafCount(tree->rchild);
    }
}
 int main()
 {
     BiTree *tree;
     CreateTree(tree);
     LeafCount(tree);
     cout<<count;
     return 0;
 }

 

 

 

 

Swust OJ973: 统计利用先序遍历创建的二叉树叶结点的个数

标签:des   rip   include   利用   malloc   str   create   copy   int   

原文地址:https://www.cnblogs.com/army613bts/p/12684490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!