二叉树平衡因子应用举例
#include "stdafx.h" #include <fstream> #include <iostream> using namespace std;typedef struct _Node {int data;struct _Node *left;struct _Node *right;int bf; //平衡因子 _Node(){data = 0;left = NULL;right = NULL;bf = 0;} }Node, *_PNode;//创建二叉树利用先序创建 /*1/ \2 3/ \ / 4 5 6/ \ \ / \7 8 9 10 11/ \12 13 */ void CreateBitree(_PNode &pNode, fstream &fin) {int dat;fin>>dat;if(dat==0){pNode = NULL;}else {pNode = new Node();pNode->data=dat; CreateBitree(pNode->left, fin); CreateBitree(pNode->right, fin);} }//**************************************求各结点的平衡因子**************************************begin//递归求二叉树的深度 int Depth(_PNode pNode) {if (NULL != pNode){int hl = Depth(pNode->left);int hr = Depth(pNode->right);return hl > hr ? hl + 1: hr + 1;}return 0; }//递归求二叉树每个结点的平衡因子 void Balance(_PNode pNode) {if (NULL != pNode){Balance(pNode->left);Balance(pNode->right);int hl = Depth(pNode->left);int hr = Depth(pNode->right);pNode->bf = hl - hr;} }//前序递归遍历 void PreTravelTree(_PNode pRoot) {if(pRoot){cout<<pRoot->data<<"("<<pRoot->bf<<")"<<" ";PreTravelTree(pRoot->left); PreTravelTree(pRoot->right);} }//中序递归遍历 void MidTravelTree(_PNode pRoot) {if(pRoot){MidTravelTree(pRoot->left); cout<<pRoot->data<<"("<<pRoot->bf<<")"<<" ";MidTravelTree(pRoot->right);} }//**************************************求各结点的平衡因子**************************************endint _tmain(int argc, _TCHAR* argv[]) {_PNode pRoot = NULL;fstream fin("tree.txt");CreateBitree(pRoot, fin);Balance(pRoot);cout<<"前序:";PreTravelTree(pRoot);cout<<endl<<"后序:";MidTravelTree(pRoot);cout<<endl;return 0; }
运行界面如下:
建造二叉树用到的tree.txt文件如下:
1 2 4 7 12 0 0 0 8 0 13 0 0 5 0 9 0 0 3 6 10 0 0 11 0 0 0
二叉树平衡因子应用举例相关推荐
- DS查找—二叉树平衡因子
题目描述 二叉树用数组存储,将二叉树的结点数据依次自上而下,自左至右存储到数组中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点在数组中用0来表示. 计算二叉树每个结点的平衡因子,并按后序遍历的顺 ...
- ds查找—二叉树平衡因子_面试官让我手写一个平衡二叉树,我当时就笑了
平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作.把大量的同学都给转晕了.这篇文章最主要的特点就是通过动画的形式演示.确保大家都能看懂.最后是手写一个平衡二叉树. 一. ...
- c语言求平衡因子,平衡二叉树(AVL树)的基本操作
0x00.平衡二叉树的定义 平衡二叉树(AVL树)是一种特殊的二叉搜索树,只是在二叉搜索树上增加了对"平衡"的需求. 假如一棵二叉搜索树,按照"1,2,3,4,5&quo ...
- 平衡二叉树平衡因子怎么计算_数据结构PHP 平衡二叉树(AVL)的平衡原理
这篇文章主要介绍一下 平衡二叉树(AVL),对于 二分搜索树 来说,如果树上的 元素 是顺序 添加的,会导致数据退化成一个 链表,这样就会造成很严重的性能问题,此时就需要在 二分搜索树 的基础上,保证 ...
- 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 二叉树平衡的基本思想是通过 ...
- 平衡二叉树平衡因子怎么计算_平衡二叉树(AVL Tree)旋转机制分析
平衡二叉树(AVL Tree) 概述 AVL树是以二分搜索树(BST)为底层数据结构而实现的,其特性是需要维护AVL的|平衡因子| <= 1 平衡因子 对于一个父节点的左右子树高度差的绝对值需要 ...
- 平衡二叉树平衡因子_数据结构:平衡二叉树
1.基本概念 平衡二叉树(AVL树),或为空树,或为如下性质的二叉排序树:左右子树深度之差的绝对值不超过1;左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度. 平衡二叉树每个结点 ...
- 二叉树平衡(DSW算法)
一.前言 <二叉查找树全面详细介绍>中讲解了二叉树操作:搜索(查找).遍历.插入.删除.<二叉树遍历详解(递归遍历.非递归栈遍历,Morris遍历)>详细讲解了二叉树遍历的几种 ...
- 不用平衡因子及父节点来实现平衡二叉树
// 不是 很会用图片来进行描述我的插入想法 在这里只能简单口述一下 // 最核心的想法就是 始终以最上面的三个节点来调整二叉树 让其达到平衡 //情况分为四种 //第一种 当头节点的左节点的左节点造 ...
最新文章
- mysql/mariadb命令如何获取帮助
- 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
- windows service 2008 内存吃尽解决方案
- AcWing之重建二叉树
- mxnet安装(Jetson)
- 斜齿轮受力计算:理论计算virtual.lab motion 仿真
- 一张图看尽 Linux 内核运行原理
- Linux IPC(Inter-Process Communication,进程间通信)之管道学习
- 新计算机 安装win2000,诚请指教如何在较新配置电脑中安装win2000及其VHD系统
- 爱站网关键词挖掘查询工具-批量网站关键词挖掘导出软件免费下载
- OpenGL+VS2015相关类库配置
- 从zookeeper官方文档系统学习zookeeper
- 红孩儿编辑器的详细设计第二部分
- 概率统计_假设检验——单边检验的接受域和拒绝域
- python实现视频人脸替换_python换人脸视频教程(怎样制作人脸从小到老的变化视频?)...
- docker之制作镜像
- 字典制作工具-创建自己的密码字典文件
- ESD保护芯片BAT54S/BAV99和电平转换芯片SN74AVC1T45
- Python中,一次性往Excel写入几十万条数据
- wps 字体对系统无效_“字体”侵权,你是否也中招?
热门文章
- vue项目部署iis后 乱码_vue项目的自动化部署
- 计算机课教案学法,计算机应用基础教学方法初探
- cmd 将文件夹下文件剪切到另外一个文件_手把手教你运行第一个 Java 程序,看不懂你来骂我!...
- 得到多组单选框的值_多组学如何构建预后预测模型,还发了7分+?
- matlab避免使用for_MATLAB新手学习技巧第二波来袭
- 理解crossentropy loss
- 27留数及其应用(三)
- 基于图像处理技术的柑橘病害自动检测与分类
- Java将一个正整数进行因数分解
- alter table 加多个字段_Vue 组件设计 - table不需要封装