二叉树基本操作(二) -----显示

本文继续探讨二叉树的基本操作,重点在于如何在屏幕上清晰地显示二叉树。通过设计显示效果,确定实现关键步骤,包括定义相关结构,获取树的深度信息,创建单个节点的打印函数,主函数的编写,最终展示结果。
摘要由CSDN通过智能技术生成

接上回,简单的在屏幕上面显示二叉树。

方案

显示效果设计

1、显示结构采用满二叉树的结构来显示,不管有多少节点,显示结构只和深度有关(没有的节点,显示空白)
2、显示大小、间隔,以二叉树最后一层为标准,不管二叉树多深,最后一层相邻两个节点距离不变,该距离可定制
3、不同节点之间不应当重叠

实现关键步骤

1、该二叉树的显示和层数有关,层数约大,上层的间距越大,越小,下层的间距越小,
不同层数的二叉树的最终显示,最后一层的间隔都是一样的。
实现:固定间隔,因此二叉树的总宽度近视等于:  间隔 * 最后一层的节点个数
2、坐标问题。
a、Y坐标位置: 节点的深度可以作为印时的Y坐标
b、X坐标位置:由于二叉树每个节点之间的距离都可以安排为上一层节点的1/2,而左右子节点到该节点的距离又相等。所以可以如下安排:
X坐标:       1
1-1/2                        1+1/2
     1/2-1/4     1/2+1/4     3/2-1/4      3/2+1/4
3、打印。由于打印是按行的因此需要实现按层遍历,
借助队列可以实现按层打印
伪代码:
首节点放入队列
while(队列不为空)
弹出并打印当前节点
左右孩子放入队列

实现

1、相关定义

typedef struct BinNodetag
{
	BinNod
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值