#include <iostream>
using namespace std;
#include <malloc.h>
#include <stdio.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define IINFEASIBLE -1
#define OVERFLOW -2#define MAX_TREE_SIZE 100//二叉树的最大结点数
typedef char ElemType;
typedef int Status;typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;//结点类型,指针类型int count=0;//CountLeaf函数用到的全局变量
Status CreateBiTree(BiTree &T)//按照先序序列建立二叉树的二叉链表
{//按先序次序输入二叉树中结点的值(一个字符),#表示空树//构造二叉链表表示的二叉树Tchar ch;scanf("%c",&ch);if(ch=='#')T = NULL;//(出口)else{if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))//要一个二叉树结点exit(OVERFLOW);T -> data = ch;//生成根结点CreateBiTree(T->lchild);//构造左子树CreateBiTree(T->rchild);//构造右子树}return OK;
}Status InorderTraverse(BiTree T)//采用二叉链表存储结构,中序遍历二叉树
{if(T==NULL){return ERROR;}else{InorderTraverse(T->lchild);//遍历左子树printf("%c",T->data);InorderTraverse(T->rchild);//遍历右子树}return OK;
}int Depth(BiTree T)//求二叉树深度
{int depthval,depthleft,depthright;if(!T)depthval = 0;else{depthleft = Depth(T->lchild);//求左子树深度depthright = Depth(T->rchild);//求右子树深度depthval = 1 + (depthleft > depthright ? depthleft : depthright);}return depthval;
}int CountLeaf(BiTree T)//需要在函数之前定义全局变量count
{if(T){if((!T->lchild)&&(!T->rchild)){count++;}else{CountLeaf(T->lchild);CountLeaf(T->rchild);}}return count;
}/*void CountLeaf(BiTree T,int &count)
{if(T){if((!T->lchild)&&(!T->rchild))count++;CountLeaf(T->lchild,count);CountLeaf(T->rchild,count);}
}*/int main()
{BiTree T ;cout << "请按照先序方式输入二叉树的结点元素;" << endl;CreateBiTree(T);cout << "创建成功的二叉树中序序列为;" <<endl;InorderTraverse(T);cout << endl<<"此二叉树的深度为:" <<Depth(T)<<endl;cout << "此二叉树的叶子结点个数为:" <<CountLeaf(T)<<endl;/*cout<<count<<endl;*/return 0;
}

二叉树的基本应用知识总结相关推荐

  1. 二叉树的基本理论知识

    树的特征 树是一种数据结构,它是n(n>=0)个节点的有限集.n=0时称为空树.n>0时,有限集的元素构成一个具有层次感的数据结构. 区别于线性表一对一的元素关系,树中的节点是一对多的关系 ...

  2. 算法基础知识——二叉树

    算法基础知识--二叉树 目录: 基础知识 基本定义 应用实例 重建二叉树[剑指Offer_编程题] 二叉树的镜像[剑指Offer_编程题] 从上往下打印二叉树[剑指Offer_编程题] 二叉搜索树的后 ...

  3. 二叉树查找结点c语言_二叉树操作详解

    (给C语言与CPP编程加星标,提升C/C++技能) 来源:https://segmentfault.com/a/1190000008850005 [导读]:树是数据结构中的重中之重,尤其以各类二叉树为 ...

  4. #1049 : 后序遍历(二叉树,DFS)

    #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常 ...

  5. LeetCode:二叉树相关应用

    LeetCode:二叉树相关应用 基础知识 617.归并两个二叉树 题目 Given two binary trees and imagine that when you put one of the ...

  6. 深入学习二叉树(二) 线索二叉树

    深入学习二叉树(二) 线索二叉树 1 前言 在上一篇简单二叉树的学习中,初步介绍了二叉树的一些基础知识,本篇文章将重点介绍二叉树的一种变形--线索二叉树. 2 线索二叉树 2.1 产生背景 现有一棵结 ...

  7. extjs曲线数据如何从后端获取_B端产品经理应了解的技术知识(上)

    点击上方"蓝字"关注我!转载请注明出处! 互联网行业发展这么多年,产品经理这个行业也发展了多年,现在很多人都已形成了共识:产品经理需要懂技术!那么,作为B端产品经理,究竟需要掌握哪 ...

  8. 数据结构与算法——二叉树与图汇总整理

    目录 预备知识:二叉树基础知识 例1:路径之和2(medium)(二叉树深搜) 例2:最近的公共祖先(medium)(二叉树性质) 例3:二叉树转链表(medium)(二叉树与链表) 预备知识:二叉树 ...

  9. 深入浅出!二叉树详解,包含C语言代码

    [导读]:树是数据结构中的重中之重,尤其以各类二叉树为学习的难点.在考研中,二叉树也是常考的模块.本文主要讲二叉树操作的相关知识.请大家跟随小编一起来复习吧. 本篇针对面试中常见的二叉树操作作个总结: ...

最新文章

  1. 论文: 贝叶斯优化方法和应用综述(1)--------陈述设计类问题举例子,与 model-free优化计算的对比
  2. 行波iq调制器_低功率IQ调制器的基带设计实例—电路精选(1)
  3. 根据这博客复习,我收到了BAT等大厂的技术岗offer
  4. mysql如何在一个表中插入数据的同时,更新另一个表的数据?
  5. 线程让出实验【RT-Thread学习笔记 4】
  6. mysql 查询语句 过滤_MySQL全面瓦解7:查询的过滤条件
  7. 信息学奥赛C++语言: 单词的长度
  8. 不想在博问中提出的问题
  9. CCF201312-3 最大的矩形(解法二)(100分)(废除!!!)
  10. 免费python自学攻略-Python自学攻略
  11. 通过v$sqlarea,v$sql查询最占用资源的查询
  12. java中将Excel转图片
  13. Xilinx XC7Z020双核ARM+FPGA开发板试用合集——硬件赏析
  14. 立下flag,一周一篇博客
  15. 5款超棒的微信小程序!绝对满足你的需求!个个超级厉害!
  16. 【WIN10】win10更改以太网名称以及以太网下网络名称
  17. 罗永浩微博发声,锤子或再出新一代坚果手机?
  18. [Neuronal Dynamics 笔记] I Foundations of Neuronal Dynamics - 1 Introduction
  19. 云GIS架构的研究与实践
  20. HTML中如何使用阿里图标库?

热门文章

  1. XPath与多线程爬虫
  2. Win10控制桌面图标显示
  3. 洛谷 3519 bzoj 2213 Difference
  4. Luogu 2470 [SCOI2007]压缩
  5. Django-缓存的配置
  6. String比较.equals
  7. 函数的四种调用模式.上下文调用.call.apply
  8. [Struts2应用开发] JSON的应用
  9. 贝叶斯定理——数学之美
  10. MRTG—网络监控工具