接文章《求二叉树的高度以及二叉树的树形显示》,当求出二维矩阵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实现二叉树的树形显示相关推荐

  1. Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示

    Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...

  2. Matlab:利用Matlab实现布朗运动模拟

    Matlab:利用Matlab实现布朗运动模拟 目录 输出结果 实现代码 输出结果 实现代码 n=40 s=0.04 x=rand(n,1)-0.5; y=rand(n,1)-0.5; h=plot( ...

  3. 环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序

    环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. YID:696064261479453 ...

  4. matlab里的仿真模型块,搭建simulink模型(如何利用MATLAB/SIMULINK搭建简单的仿真模型)...

    如何利用MATLAB/SIMULINK搭建简单的仿真模型 安装完MATLAB软件后,在电脑桌面点击MATLAB快捷方式 打开MATLAB后,点击Simulink Library按钮 之后会进入Simu ...

  5. 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc

    <利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...

  6. matlab复数向极坐标转换_[matlab 极坐标]利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。谁能写出函数和调用语句?...

    利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出函数和调用语句? 问题补充:利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出 ...

  7. 坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法

    其中在介绍角度估计中,通过对接收差频信号在快慢时间维度的扩展,增加了空域的信息.扩展后的接收差频信号可以表示为 其中k表示接收天线的个数,d为天线间距. 在"干货|利用MATLAB实现FMC ...

  8. matlab text黑体,MATLAB论文利用MATLAB研究黑体辐射规律.doc

    PAGE PAGE 1<MATLAB语言>课程论文利用MATLAB研究黑体辐射规律姓名:陈清源 学号:12010245332 专业:电子信息工程 班级:2010级1班指导老师:汤全武 学院 ...

  9. matlab rawdata,利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone.pdf

    利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone 2015/10/20 利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 | Cap ...

  10. 用matlab能带图,利用Matlab绘制Materials studio能带图

    [原创]利用Matlab绘制Materials studio能带图 作者: xianggui7895(站内联系TA)收录: 2011-04-06 发布: 2011-03-30 Materials St ...

最新文章

  1. 2018年自主车企销量目标完成情况 这几家企业估计要凉
  2. 增大apache 2的最大连接数
  3. Router Modules模块化
  4. canopy算法 java_mahout源码canopy算法分析之二CanopyMapper
  5. List 在迭代时可能抛出的异常
  6. 大数据和人工智能的关系是什么?
  7. 机器学习基础---超参数和验证集
  8. Particle Filter Tutorial 粒子滤波:从推导到应用(二)
  9. enjoyable parameter in pgbouncer
  10. 实人认证玩出新高度,给千年老城注入新生科技力量
  11. PMP考试-风险管理专项突破(第六版)
  12. 一步一步使用webpack+react+scss脚手架重构项目
  13. C03-Java同步实践加强班
  14. MMORPG端游《ELYON》12月10日上线 采用买断式收费方式
  15. 内网穿透远程访问家里的群晖NAS 1-2
  16. UI设计 AndroidIOS开发推荐用色
  17. 常用温度控制方法原理
  18. CF中dns服务器简单配置
  19. Sil7172中文资料
  20. 用Python输入玫瑰花语

热门文章

  1. android 横屏字体变小,android屏幕大小,字体大小,横屏竖屏切换问题
  2. 常见Web安全问题及防御策略
  3. 使用nodejs pkg创建exe文件后更改图标
  4. NMDS非度量多维尺度分析
  5. 5gh掌上云计算认证不通过_华为云计算认证考试好考吗?我考华为云计算HCIE的经验分享...
  6. 苹果手机怎么投屏王者荣耀
  7. 改名后火速递表,飞天云动冲刺国内元宇宙第一股,借力能否成功?
  8. 人机关系:基于中国文化的机体哲学分析
  9. hget和get redis_redis hget hash命令简介
  10. dos命令中DATE:~0,10输出日期格式名称格式/改为-