注册 登录
编程论坛 QT论坛

二叉树叶叶节点个数求思路.

林雷左手 发布于 2013-04-27 11:25, 897 次点击
#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');
}
给这段代码加一个求二叉树叶节点个数的函数.求思路.
2 回复
#2
邓士林2013-04-30 21:08
int leaf(bitree t)
 
{
 
  if(!t)      
 
   return 0;      //空树,无叶子
 
  else if(!t->lch && !t->rch)
 
           return 1;
 
        else
 
           return (leaf(t->lch) + leaf(t->rch));
 
}
#3
邓士林2013-04-30 21:08
用递归实现
1