二叉树的基本应用知识总结
#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;
}
二叉树的基本应用知识总结相关推荐
- 二叉树的基本理论知识
树的特征 树是一种数据结构,它是n(n>=0)个节点的有限集.n=0时称为空树.n>0时,有限集的元素构成一个具有层次感的数据结构. 区别于线性表一对一的元素关系,树中的节点是一对多的关系 ...
- 算法基础知识——二叉树
算法基础知识--二叉树 目录: 基础知识 基本定义 应用实例 重建二叉树[剑指Offer_编程题] 二叉树的镜像[剑指Offer_编程题] 从上往下打印二叉树[剑指Offer_编程题] 二叉搜索树的后 ...
- 二叉树查找结点c语言_二叉树操作详解
(给C语言与CPP编程加星标,提升C/C++技能) 来源:https://segmentfault.com/a/1190000008850005 [导读]:树是数据结构中的重中之重,尤其以各类二叉树为 ...
- #1049 : 后序遍历(二叉树,DFS)
#1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常 ...
- LeetCode:二叉树相关应用
LeetCode:二叉树相关应用 基础知识 617.归并两个二叉树 题目 Given two binary trees and imagine that when you put one of the ...
- 深入学习二叉树(二) 线索二叉树
深入学习二叉树(二) 线索二叉树 1 前言 在上一篇简单二叉树的学习中,初步介绍了二叉树的一些基础知识,本篇文章将重点介绍二叉树的一种变形--线索二叉树. 2 线索二叉树 2.1 产生背景 现有一棵结 ...
- extjs曲线数据如何从后端获取_B端产品经理应了解的技术知识(上)
点击上方"蓝字"关注我!转载请注明出处! 互联网行业发展这么多年,产品经理这个行业也发展了多年,现在很多人都已形成了共识:产品经理需要懂技术!那么,作为B端产品经理,究竟需要掌握哪 ...
- 数据结构与算法——二叉树与图汇总整理
目录 预备知识:二叉树基础知识 例1:路径之和2(medium)(二叉树深搜) 例2:最近的公共祖先(medium)(二叉树性质) 例3:二叉树转链表(medium)(二叉树与链表) 预备知识:二叉树 ...
- 深入浅出!二叉树详解,包含C语言代码
[导读]:树是数据结构中的重中之重,尤其以各类二叉树为学习的难点.在考研中,二叉树也是常考的模块.本文主要讲二叉树操作的相关知识.请大家跟随小编一起来复习吧. 本篇针对面试中常见的二叉树操作作个总结: ...
最新文章
- 论文: 贝叶斯优化方法和应用综述(1)--------陈述设计类问题举例子,与 model-free优化计算的对比
- 行波iq调制器_低功率IQ调制器的基带设计实例—电路精选(1)
- 根据这博客复习,我收到了BAT等大厂的技术岗offer
- mysql如何在一个表中插入数据的同时,更新另一个表的数据?
- 线程让出实验【RT-Thread学习笔记 4】
- mysql 查询语句 过滤_MySQL全面瓦解7:查询的过滤条件
- 信息学奥赛C++语言: 单词的长度
- 不想在博问中提出的问题
- CCF201312-3 最大的矩形(解法二)(100分)(废除!!!)
- 免费python自学攻略-Python自学攻略
- 通过v$sqlarea,v$sql查询最占用资源的查询
- java中将Excel转图片
- Xilinx XC7Z020双核ARM+FPGA开发板试用合集——硬件赏析
- 立下flag,一周一篇博客
- 5款超棒的微信小程序!绝对满足你的需求!个个超级厉害!
- 【WIN10】win10更改以太网名称以及以太网下网络名称
- 罗永浩微博发声,锤子或再出新一代坚果手机?
- [Neuronal Dynamics 笔记] I Foundations of Neuronal Dynamics - 1 Introduction
- 云GIS架构的研究与实践
- HTML中如何使用阿里图标库?