博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树平衡因子应用举例
阅读量:4971 次
发布时间:2019-06-12

本文共 2462 字,大约阅读时间需要 8 分钟。

#include "stdafx.h"#include 
#include
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<
data<<"("<
bf<<")"<<" "; PreTravelTree(pRoot->left); PreTravelTree(pRoot->right); }}//中序递归遍历void MidTravelTree(_PNode pRoot) { if(pRoot) { MidTravelTree(pRoot->left); cout<
data<<"("<
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<
<<"后序:"; MidTravelTree(pRoot); cout<

运行界面如下:

建造二叉树用到的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

转载于:https://www.cnblogs.com/venow/archive/2012/08/23/2652044.html

你可能感兴趣的文章
mysql upper() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
3-day3-list-truple-map.py
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
OPENSSL使用方法
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>