matlab创建⼆叉树(⼆维数据)
⼀、学习要点
1.注意matlab中全局变量与局部变量的区别;本⽂中assigned_nn为局部变量,每⼀次递归中的值都是不⼀样的,node_nubmer为全局变量,当前值的改变如递增,必回影响以后每次递归中该变量的值;结点数据的保存是每次都要递增的,故选择全局变量。每个结点左右⼦树的值应为局部变量,因为回溯回去该节点的序号不应改变,⽐如求2号结点的左右⼦树,⽽且回溯回去的左右结点序号也不是按程序执⾏的次数递增。
2.当输⼊为数据为[-1,-1],意味着该分⽀数据不存在,即为空数据,该节点不存在,他⽗节点的对应的⼦树即为空。
3.该⼦树的创建为由键盘数据的⼆维数据先序构建⼆叉树。
4.matlab利⽤的是cell中的struct的序号建⽴整棵树,C语⾔中⼀般利⽤的是指针。
⼆、程序代码
1.创建⼆叉树的代码:
函数名:build_btree_parent2.m
function tree_out=build_btree_parent2(parent)
global node_number
global tree_cell
if nargin==0
parent=0;
end
fprintf('请输⼊数据:');
point(1)=input('请输⼊x轴坐标:');
point(2)=input('请输⼊y轴坐标:');
80个家常小炒if(impty(tree_cell))
手游天龙八部
node_number=1;
assigned_nn=1;
tree_cell(node_number).data=point;
tree_cell(node_number).parent=parent;
elif(point(1)==point(2)&&point(1)==-1)
地方的英语tree_out=[];
return;
el
node_number=node_number+1;
assigned_nn=node_number;
tree_cell(node_number).data=point;
衾何以堪小说
tree_cell(node_number).parent=parent;
end
fprintf('请输⼊[%d,%d]左⼦树数据\n',point(1),point(2));
tree_cell(assigned_nn).left=build_btree_parent2(assigned_nn);
fprintf('请输⼊[%d,%d]右⼦树数据\n',point(1),point(2));
tree_cell(assigned_nn).right=build_btree_parent2(assigned_nn);
护士读书笔记
tree_out=assigned_nn;
if assigned_nn==1
tree_out=tree_cell;
小丑简笔画end
2.调⽤的主函数:
函数名:main.m
clear all
global tree_cell四棱锥
tree_cell=[];
项羽tree_out=build_btree_parent2();
三、程序运⾏结果:
1.键盘输⼊:
2.程序运⾏结果: