树的基本概念:

树具有递归性,非线性

完全二叉树  :所有节点都在

举例:

递归遍历二叉树:

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include<string.h>typedef struct BinaryNode {char ch;struct BinaryNode* lchild;struct BinaryNode* rchild;
}binarynode;//递归遍历
void Recursion(binarynode* root) {if (root == NULL) {return;}//遍历左子树Recursion(root->lchild);//遍历右子树Recursion(root->rchild);//先访问根节点printf("%c", root->ch);
}void CreatBinaryTree() {binarynode node1 = { 'A',NULL,NULL };binarynode node2 = { 'B',NULL,NULL };binarynode node3 = { 'C',NULL,NULL };binarynode node4 = { 'D',NULL,NULL };binarynode node5 = { 'E',NULL,NULL };binarynode node6 = { 'F',NULL,NULL };binarynode node7 = { 'G',NULL,NULL };binarynode node8 = { 'H',NULL,NULL };// binarynode node9 = { 'I',NULL,NULL };//建立节点关系node1.lchild = &node2;node1.rchild = &node6;node2.rchild = &node3;node3.lchild = &node4;node3.rchild = &node5;node6.rchild = &node7;node7.lchild = &node8;//先序遍历Recursion(&node1);
}int main()
{   CreatBinaryTree();printf("\n");system("pause");return 0
}

求叶子节点数:(叶子节点概念,无左孩子和右孩子)

// 求叶子节点数目
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include<string.h>typedef struct BinaryNode {char ch;struct BinaryNode* lchild;struct BinaryNode* rchild;
}binarynode;void Recursion(binarynode* root) {if (root == NULL) {return;}printf("%c", root->ch);Recursion(root->lchild);Recursion(root->rchild);
}
binarynode* CopyBonaryTree(binarynode* root) {if (root == NULL) {return NULL;}binarynode* lchild = CopyBonaryTree(root->lchild);binarynode* rchild = CopyBonaryTree(root->rchild);binarynode* newnode = (binarynode*)malloc(sizeof(binarynode));newnode->ch = root->ch;newnode->lchild = lchild;newnode->rchild = rchild;return newnode;
}void Free_binaryTree(binarynode* root) {if (root != NULL) {return;}Free_binaryTree(root->lchild);Free_binaryTree(root->rchild);Free_binaryTree(root);
}void CreatBinaryTree() {binarynode node1 = { 'A',NULL,NULL };binarynode node2 = { 'B',NULL,NULL };binarynode node3 = { 'C',NULL,NULL };binarynode node4 = { 'D',NULL,NULL };binarynode node5 = { 'E',NULL,NULL };binarynode node6 = { 'F',NULL,NULL };binarynode node7 = { 'G',NULL,NULL };binarynode node8 = { 'H',NULL,NULL };// binarynode node9 = { 'I',NULL,NULL };//建立节点关系node1.lchild = &node2;node1.rchild = &node6;node2.rchild = &node3;node3.lchild = &node4;node3.rchild = &node5;node6.rchild = &node7;node7.lchild = &node8;binarynode* root = CopyBonaryTree(&node1);Recursion(root);Free_binaryTree(root);
}int main()
{CreatBinaryTree();printf("\n");system("pause");return 0;}

【C++】【十】二叉树相关推荐

  1. 二叉树的基本运算实验报告C语言,实验三 二叉树基本操作与应用实验

    实验三 二叉树基本操作与应用实验 第三次实验主要包括两部分内容:1.二叉树基本操作实验:2.二叉树应用-赫夫曼树与赫夫曼编码实验.基本操作包括存储结构建立和遍历算法,本文只给出部分参考程序,请大家尽量 ...

  2. 系统规划与管理备考整理

    @ 一.信息系统综合知识 1.1 信息的定义和属性 1.信息是客观事物状态和运动特征的一种普遍相识,客观世界中大量存在.产生和传递着以这些方式表示出各种各样的信息 (1)信息的定性描述 控制论的创始人 ...

  3. 二十、 二叉树的同构

    二十. 二叉树的同构 文章目录 二十. 二叉树的同构 题目描述 解题思路 上机代码 补充说明 题目描述 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是" ...

  4. 十九、二叉树的最近的公共祖先

    十九.二叉树的最近的公共祖先 文章目录 十九.二叉树的最近的公共祖先 题目描述 解题思路 上机代码: 题目描述 设顺序存储的二叉树中有编号为 i 和 j 的两个结点,请设计算法求出它们最近的公共祖先结 ...

  5. 十八、二叉树遍历序列还原

    十八.二叉树遍历序列还原 文章目录 十八.二叉树遍历序列还原 题目描述 解题思路 上机代码 题目描述 给出二叉树的中序遍历序列和后序遍历序列,编程还原该二叉树. 输入: ​第1行为二叉树的中序遍历序列 ...

  6. 求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)

    这段时间跟二叉树杠上了,接下来还有许多二叉树的题目,虽然已经做了不少了,大多题目都涉及到了递归,也挺好,刚好有机会练习一下递归,但是遇到新的题目还是有点力不从心,还需要看参考答案,真希望有一天像汤神一 ...

  7. 二叉树类图_数据结构(十四)——二叉树

    数据结构(十四)--二叉树 一.二叉树简介 1.二叉树简介 二叉树是由n(n>=0)个结点组成的有序集合,集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的.互不相交的二叉树组成. ...

  8. DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总

    DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...

  9. 12_JavaScript数据结构与算法(十二)二叉树

    JavaScript 数据结构与算法(十二)二叉树 二叉树 二叉树的概念 如果树中的每一个节点最多只能由两个子节点,这样的树就称为二叉树: 二叉树的组成 二叉树可以为空,也就是没有节点: 若二叉树不为 ...

  10. 数据结构(十九) -- C语言版 -- 树 - 树、森林、二叉树的江湖爱恨情仇、相互转换

    内容预览 零.读前说明 一.树转换为二叉树 二.二叉树转换为树 三.二叉树转换为森林 四.森林转换为二叉树 五.树与森林的遍历 5.1.树的遍历 5.2.森林的遍历 零.读前说明 本文中所有设计的代码 ...

最新文章

  1. android里面画布快照,自定义 View - Canvas - 画布操作和快照
  2. 05-session-会话跟踪技术
  3. 学python编程_少儿学Python编程的一些思考
  4. go mysql recover_golang recover后怎么返回
  5. 第一次冲刺阶段(三)
  6. c语言打程序时会遇到什么问题,Sublime text3 实现C语言编译运行以及过程中可能遇到的问题...
  7. sr锁存器 数电_数字电路第5章(1SR锁存器)_2.ppt
  8. ubuntu中mysql安装失败
  9. 计算机王码简历,王码五笔字型发明人王永民回首汉字输入这30年
  10. 基于单片机的智能交通灯控制系统的设计
  11. 流水线扫描条码自动分拣方案
  12. raspberry pi_十个有趣的Raspberry Pi项目:JAXenter的精选
  13. 构之以技术,付之以匠心——读《构建之法》有感
  14. 安装k8s时,报CA证书加载失败的错误
  15. 【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within(已附源码)
  16. VsCode 何时能一统江湖?
  17. 森林门前的小路用计算机弹奏歌曲,森林外的小路看花香漫步什么歌
  18. 代谢组学以冬虫夏草多糖的益生机制为例研究和发现关键肠道菌群
  19. 经典的DES算法详解
  20. android adt bundle for linux 64 bit 下载

热门文章

  1. vue webpack打包入口文件是哪个_Vue项目起步
  2. c 找文件服务器文件,Linux C/C++项目:虚拟文件服务器(功能匹配百度网盘)
  3. 云服务器可以安装操作系统么,云服务器能装操作系统吗
  4. upgrade lnmpa php.sh,LNMP 状态管理命令说明及Nginx、MySQL/MariaDB、PHP升级教程
  5. 泰安服务器维护公司,神云 泰安服务器
  6. qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
  7. Linux那些事儿 之 戏说USB(8)从这里开始
  8. MySQL拦截器获取xml id_关于mybatis拦截器,有谁知道怎么对结果集进行拦截,将指定字段查询结果进行格式化...
  9. OpenCV中minAreaRect()最小外接矩形 cvBoxPoints()计算矩形顶点 RotatedRect和CvBox2D详解
  10. 前端img里面的src能是bmp么_实习|字节跳动前端实习生(非科班已定offer)三技术面+一HR面...