二叉树模型matlab实现,利用Matlab实现二叉树的树形显示
接文章《求二叉树的高度以及二叉树的树形显示》,当求出二维矩阵m以后可以借助Matlab绘图更为生动的树形图,如下面的代码所示,将m矩阵赋值给mx,利用下面的程序可以得到比较不错的效果图:
clear all;
clc;
close all;
mx =...
[0 0 0 1 0 0 0
0 1 0 0 0 1 0
1 0 1 0 1 0 0];
cnt = 0;
clear mx;
mx = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0];
[row,col] = size(mx);
for i = 1:row
for j = 1:col
hold on;
if (mx(i,j) == 1)
plot(j,row-i,'Marker','.','Markersize',30,'MarkerFaceColor','k','MarkerEdgeColor','k');
text(j,row-i-0.05*row,char('A'+cnt));
cnt = cnt + 1;
end
end
end
ylim([-1,row]);
grid on;
d = col + 1;
for i = 1:row-1
% for j = 1:col
% if (mx(i,j) == 1)
% d = j;
% break;
% end
% end
d = d / 2;
for j = 1:col
if (mx(i,j) == 1)
for k = 1:col
if ((mx(i+1,k) == 1) & (abs(k - j) <= floor(d/2)))
hold on;
plot([j,k],[row-i,row-(i+1)],'-k','Linewidth',2.5);
end
end
end
end
end
下面的程序:
#include
#include
#include
using namespace std;
typedef struct BinTreeNode * BinTree;
typedef struct BinTreeNode
{
char data;
BinTree lChild,rChild;
} BinTreeNode;
int max(int a,int b)
{
return a>b?a:b;
}
void BuildBinTree(BinTree *T)
{
char item;
cin>>item;
if(item=='#')
{
*T = NULL;
}
else {
*T = new BinTreeNode;
(*T)->data = item;
BuildBinTree(&((*T)->lChild));
BuildBinTree(&((*T)->rChild));
}
}
int Height(BinTree T)
{
if (!T)
return 0;
return 1 + max(Height(T->lChild),Height(T->rChild));
}
void DestroyBinTree(BinTree *T)
{
if(*T)
{
DestroyBinTree(&((*T)->lChild));
DestroyBinTree(&((*T)->rChild));
delete (*T);
*T = NULL;
}
}
void ShowTreeMarker(int **m,int row,int col,char *s)
{
int cnt = 0;
for(int i=0;i
{
for(int j=0;j
{
if(m[i][j])
cout<
else
cout<
}
cout<
}
}
void MatCreate(int *c,int **m,int level)
{
int i,j;
int start,step;
int len = (1<
m[0][len>>1] = 1;
int d = len;
int cnt = 0;
for(i=1;i
{
//the (i-1)th row
d = d>>1;
start = (d>>1);
//if (c[++cnt])
//m[i][start] = 1;
for(j=1;j<=(1<
if(c[++cnt])
m[i][start+(d+1)*(j-1)] = 1;
}
}
void Pave(BinTree T,int *c,int start)
{
if(T)
{
c[start] = 1;
Pave(T->lChild, c, 2 * start + 1);
Pave(T->rChild, c, 2 * start + 2);
}
}
int main()
{
BinTree T = NULL;
BuildBinTree(&T);
int h = Height(T);
int len = (1<
int *c = new int[len];
memset(c,0,len*sizeof(int));
Pave(T,c,0);
for(int i = 0; i < len; i++)
cout<
cout<
cout<
cout<
int **m = new int*[h];
for(int i= 0;i
m[i] = new int[len];
memset(m[i],0,len*sizeof(int));
}
MatCreate(c,m,h);
for(int i=0;i
{
for(int j=0;j
cout<
cout<
}
ShowTreeMarker(m,h,len,"ABCDEFGHIJK");
DestroyBinTree(&T);
}
的输入为:
ABD##E##CF###
输出图形为:
当输入数据为:
AB#D##CE##FGI###H##输出图形为:
二叉树模型matlab实现,利用Matlab实现二叉树的树形显示相关推荐
- Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示
Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...
- Matlab:利用Matlab实现布朗运动模拟
Matlab:利用Matlab实现布朗运动模拟 目录 输出结果 实现代码 输出结果 实现代码 n=40 s=0.04 x=rand(n,1)-0.5; y=rand(n,1)-0.5; h=plot( ...
- 环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序
环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. YID:696064261479453 ...
- matlab里的仿真模型块,搭建simulink模型(如何利用MATLAB/SIMULINK搭建简单的仿真模型)...
如何利用MATLAB/SIMULINK搭建简单的仿真模型 安装完MATLAB软件后,在电脑桌面点击MATLAB快捷方式 打开MATLAB后,点击Simulink Library按钮 之后会进入Simu ...
- 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc
<利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...
- matlab复数向极坐标转换_[matlab 极坐标]利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。谁能写出函数和调用语句?...
利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出函数和调用语句? 问题补充:利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出 ...
- 坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法
其中在介绍角度估计中,通过对接收差频信号在快慢时间维度的扩展,增加了空域的信息.扩展后的接收差频信号可以表示为 其中k表示接收天线的个数,d为天线间距. 在"干货|利用MATLAB实现FMC ...
- matlab text黑体,MATLAB论文利用MATLAB研究黑体辐射规律.doc
PAGE PAGE 1<MATLAB语言>课程论文利用MATLAB研究黑体辐射规律姓名:陈清源 学号:12010245332 专业:电子信息工程 班级:2010级1班指导老师:汤全武 学院 ...
- matlab rawdata,利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone.pdf
利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone 2015/10/20 利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 | Cap ...
- 用matlab能带图,利用Matlab绘制Materials studio能带图
[原创]利用Matlab绘制Materials studio能带图 作者: xianggui7895(站内联系TA)收录: 2011-04-06 发布: 2011-03-30 Materials St ...
最新文章
- 2018年自主车企销量目标完成情况 这几家企业估计要凉
- 增大apache 2的最大连接数
- Router Modules模块化
- canopy算法 java_mahout源码canopy算法分析之二CanopyMapper
- List 在迭代时可能抛出的异常
- 大数据和人工智能的关系是什么?
- 机器学习基础---超参数和验证集
- Particle Filter Tutorial 粒子滤波:从推导到应用(二)
- enjoyable parameter in pgbouncer
- 实人认证玩出新高度,给千年老城注入新生科技力量
- PMP考试-风险管理专项突破(第六版)
- 一步一步使用webpack+react+scss脚手架重构项目
- C03-Java同步实践加强班
- MMORPG端游《ELYON》12月10日上线 采用买断式收费方式
- 内网穿透远程访问家里的群晖NAS 1-2
- UI设计 AndroidIOS开发推荐用色
- 常用温度控制方法原理
- CF中dns服务器简单配置
- Sil7172中文资料
- 用Python输入玫瑰花语
热门文章
- android 横屏字体变小,android屏幕大小,字体大小,横屏竖屏切换问题
- 常见Web安全问题及防御策略
- 使用nodejs pkg创建exe文件后更改图标
- NMDS非度量多维尺度分析
- 5gh掌上云计算认证不通过_华为云计算认证考试好考吗?我考华为云计算HCIE的经验分享...
- 苹果手机怎么投屏王者荣耀
- 改名后火速递表,飞天云动冲刺国内元宇宙第一股,借力能否成功?
- 人机关系:基于中国文化的机体哲学分析
- hget和get redis_redis hget hash命令简介
- dos命令中DATE:~0,10输出日期格式名称格式/改为-