• 二叉树节点类型BTNode:

 typedef struct node
 {
     char data;
     struct node *lchild, *rchild;
 } BTNode;

创建二叉树

 void CreateBTree(BTNode *&b, char *str)
 {
     BTNode *St[MaxSize], *p = NULL;
     , ch, k, j = ;
     b = NULL;
     ch = str[j];
     while (ch != '\0')
     {
         switch (ch)
         {
         ; break;
         ; break;
         case ')': --top; break;
         default: p = (BTNode*)malloc(sizeof(BTNode));
             p->data = ch;  p->lchild = p->rchild = NULL;
             if (b == NULL)
                 b = p;
             else
             {
                 switch (k)
                 {
                 : St[top]->lchild = p; break;
                 : St[top]->rchild = p; break;
                 }
             }
         }
         ++j;
         ch = str[j];
     }
 }

输出二叉树

 void DispBTree(BTNode *b)
 {
     if (b != NULL)
     {
         printf(" %c", b ->data);
         if (b->lchild != NULL || b->rchild != NULL)
         {
             printf("(");
             DispBTree(b->lchild);
             if (b->rchild != NULL)
                 printf(",");
             DispBTree(b->rchild);
             printf(")");
         }
     }
 }

二叉树的高度:

 int HeightBTree(BTNode *b)
 {
     if (b != NULL)
     {
         int i = HeightBTree(b->lchild);
         int j = HeightBTree(b->rchild);
         ) : (j + ));
     }
     ;
 }

二叉树节点个数

 int Nodes(BTNode *b)
 {
     if (b == NULL)
         ;
     else if (b->lchild == NULL && b->rchild == NULL)
         ;
     else
         );
 }

二叉树叶子节点

 int LeafNodes(BTNode *b)
 {
     if (b == NULL)
         ;
     else if (b->lchild == NULL && b->rchild == NULL)
         ;
     else
         return (LeafNodes(b->lchild) + LeafNodes(b->rchild) );
 }

cpp

#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef struct node
{
    char data;
    struct node *lchild, *rchild;
} BTNode;

void CreateBTree(BTNode *&b, char *str)
{
    BTNode *St[MaxSize], *p = NULL;
    , ch, k, j = ;
    b = NULL;
    ch = str[j];
    while (ch != '\0')
    {
        switch (ch)
        {
        ; break;
        ; break;
        case ')': --top; break;
        default: p = (BTNode*)malloc(sizeof(BTNode));
            p->data = ch;  p->lchild = p->rchild = NULL;
            if (b == NULL)
                b = p;
            else
            {
                switch (k)
                {
                : St[top]->lchild = p; break;
                : St[top]->rchild = p; break;
                }
            }
        }
        ++j;
        ch = str[j];
    }
}

void DispBTree(BTNode *b)
{
    if (b != NULL)
    {
        printf(" %c", b ->data);
        if (b->lchild != NULL || b->rchild != NULL)
        {
            printf("(");
            DispBTree(b->lchild);
            if (b->rchild != NULL)
                printf(",");
            DispBTree(b->rchild);
            printf(")");
        }
    }
}

int HeightBTree(BTNode *b)
{
    if (b != NULL)
    {
        int i = HeightBTree(b->lchild);
        int j = HeightBTree(b->rchild);
        ) : (j + ));
    }
    ;
}

int Nodes(BTNode *b)
{
    if (b == NULL)
        ;
    else if (b->lchild == NULL && b->rchild == NULL)
        ;
    else
        );
}

int LeafNodes(BTNode *b)
{
    if (b == NULL)
        ;
    else if (b->lchild == NULL && b->rchild == NULL)
        ;
    else
        return (LeafNodes(b->lchild) + LeafNodes(b->rchild) );
}

int level(BTNode *b)
{

}

int main()
{
    BTNode *b;
    int h;
    char str[] = "A(B(D(G, H)),C(E(,I), F)";
    CreateBTree(b, str);
    printf("二叉树:");
    DispBTree(b); printf("\n");
    h = HeightBTree(b);
    printf("二叉树的高度为:%d\n", h);

    h = Nodes(b);
    printf("节点个数: %d\n", h);
    h = LeafNodes(b);
    printf("叶子节点个数: %d\n", h);
    ;

}

最新文章

  1. C#对七牛云的操作
  2. 【转】NHibernate:no persister for 异常
  3. Android开发者的Git&amp;Github(一)
  4. 使用CSS创建有图标的网站导航菜单
  5. cocos2d-x回收池原理
  6. struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
  7. 转:BZERO()等的区别
  8. onmousedown活用之碰撞效果
  9. HTTP相关整理(上)
  10. Hadoop的介绍、搭建、环境
  11. Log4net日志使用教程-控制台、文本、数据库三种记录方式
  12. iOS监听模式系列之本地通知Notification
  13. 【mac】ansible安装及基础使用
  14. es6 语法 (字符串扩展)
  15. (其他)window10上好用的软件
  16. Python爬虫之多线程下载程序类电子书
  17. Python sys 模块
  18. Python数据分析学习目录
  19. privilege instruction error
  20. Dajngo的CBV和FBV

热门文章

  1. iframe伪造ajax
  2. JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮【转】
  3. tcp.validnode_checking踩过的坑
  4. 为什么推荐InnoDB引擎使用自增主键?
  5. 【1】【JUC】JDK1.8源码分析之ReentrantLock
  6. PHP7 学习笔记(八)JetBrains PhpStorm 2017.1 x64 MySQL数据库管理工具的使用
  7. HTML5视频播放插件Video.js使用详解
  8. 将文本(lrc,txt)文件转换成UTF-8格式
  9. ettercap中间人攻击--参数介绍
  10. Android学习笔记——Content Provider(一)