标题:二叉树叶叶节点个数求思路.
只看楼主
林雷左手
Rank: 2
等 级:论坛游民
帖 子:6
专家分:19
注 册:2013-4-26
结帖率:0
已结贴  问题点数:30 回复次数:2 
二叉树叶叶节点个数求思路.
#include <stdio.h>
#include <stdlib.h>


typedef char DataType;
#include "BiTree.h"
#include "BiTreeTraverse.h"

void Visit(DataType item)
{
    printf("%c",item);
}

void PrintBiTree(BiTreeNode *root,int n)
{
    int i;

    if (root==NULL) return;
    PrintBiTree(root->rightChild,n+1);
    //
    for(i=0;i<n-i;i++)
        printf("  ");
    if (n>0)
    {
        printf("---");
        printf("%c\n",root->data);
    }
    PrintBiTree(root->leftChild,n+1);
}
BiTreeNode *Search(BiTreeNode *root,DataType x)
{
    BiTreeNode *find=NULL;
    if(root!=NULL)
    {
        if(root->data==x)
            find=root;
        else
        {
            find=Search(root->leftChild,x);
            if (find==NULL)
                find=Search(root->rightChild,x);
        }
    }
    return find;
}
void main (void)
{
    BiTreeNode *root,*p;


    Initiate(&root);
    p=InsertLeftNode(root,'A');
    p=InsertLeftNode(root,'B');
    p=InsertLeftNode(root,'D');
    p=InsertRightNode(root,'G');
    p=InsertLeftNode(root->leftChild,'C');
    InsertLeftNode(p,'E');
    InsertRightNode(p,'F');
}
给这段代码加一个求二叉树叶节点个数的函数.求思路.
搜索更多相关主题的帖子: void include return 二叉树 
2013-04-27 11:25
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:30 
int leaf(bitree t)
 
{
 
  if(!t)      
 
   return 0;      //空树,无叶子
 
  else if(!t->lch && !t->rch)
 
           return 1;
 
        else
 
           return (leaf(t->lch) + leaf(t->rch));
 
}

Maybe
2013-04-30 21:08
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:0 
用递归实现

Maybe
2013-04-30 21:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405657-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054251 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved