function [nodeids_,nodevalue_] = print_tree(tree)
%% 打印树,返回树的关系向量
global nodeid nodeids nodevalue;
nodeids(1)=0; % 根节点的值为0
nodeid=0;
nodevalue={};
if isempty(tree)
disp('空树!');
return ;
end
queue = queue_push([],tree);
while ~isempty(queue) % 队列不为空
[node,queue] = queue_pop(queue); % 出队列
visit(node,queue_curr_size(queue));
if ~strcmp(node.left,'null') % 左子树不为空
queue = queue_push(queue,node.left); % 进队
end
if ~strcmp(node.right,'null') % 左子树不为空
queue = queue_push(queue,node.right); % 进队
end
end
%% 返回 节点关系,用于treeplot画图
nodeids_=nodeids;
nodevalue_=nodevalue;
end
function visit(node,length_)
%% 访问node 节点,并把其设置值为nodeid的节点
global nodeid nodeids nodevalue;
if isleaf(node)
nodeid=nodeid+1;
fprintf('叶子节点,node: %d\t,属性值: %s\n', ...
nodeid, node.value);
函数:print_tree
最新推荐文章于 2021-09-14 19:50:14 发布