递归算法之绘制等距分布二叉树
Python算法之旅
共 881字,需浏览 2分钟
· 2022-02-15
说在前面
这个视频属于二叉树专题系列,是补去年暑假挖的坑。
在上一节中,我们演示了用数组存储二叉树和遍历二叉树的方法,很多老师对课件中出现的各种精美的二叉树图形产生了兴趣,纷纷询问我这些图形是用什么工具绘制出来的。
在草稿纸上手绘一棵二叉树是简单的,但绘制一张精美、规范的二叉树示意图却不容易,通常需要使用Photoshop等专业制图软件来绘制,耗时耗力,效果还不一定好。
今天我来教大家如何使用海龟绘图绘制一张规范美观的二叉树图片。
课后练习
自定义函数draw_tree(a)使用海龟绘图按层序绘制对称分布二叉树。
使用数组实现二叉树,自定义函数get_nodes_pos(a)实现按层序获取各节点信息功能。
提示:①在嵌套递归函数postorder_tree(a,res, i, y)中后序遍历存储完全二叉树的结点,以确保叶子节点的x坐标从左到右递增,分支节点的x坐标为其孩子节点x坐标的平均值。
②充分利用draw_node(x,y, r, data, size)和draw_line(x1,y1, x2, y2, r)绘制点和连线。
需要本文PPT、源代码和课后练习答案的,可以加入“Python算法之旅”知识星球参与讨论和下载文件,“Python算法之旅”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。
我们专注Python算法,感兴趣就一起来!
相关优秀文章:
讲座1:递归算法案例分析之入门第一课
讲座2:递归算法案例分析之猴子吃桃问题
讲座3:递归算法案例分析之斐波那契数列
讲座4:递归算法案例分析之寻找轻球问题
讲座5:递归算法案例分析之汉诺塔游戏
讲座6:递归算法案例分析之谢尔宾斯基三角形
评论
面试官:限流的常见算法有哪些?
限流的实现算法有很多,但常见的限流算法有三种:计数器算法、漏桶算法和令牌桶算法。1.计数器算法计数器算法是在一定的时间间隔里,记录请求次数,当请求次数超过该时间限制时,就把计数器清零,然后重新计算。当请求次数超过间隔内的最大次数时,拒绝访问。计数器算法的实现比较简单,但存在“突刺现象”。突刺现象是指
Stephen
0
985 本硕,秋招上岸阿里算法岗!
↓推荐关注↓节前,我们星球举办了技术&面试交流会,邀请了一些互联网大厂好友以及今年参加社招和校招面试的同学。会上探讨了一系列热门话题,包括大模型发展趋势、算法落地实践、面经总结,以及如何做好面试准备和应对常见考点。基于经验交流与实战经验,我们总结如下:《机器学习算法面试宝典》1.0 发布!今
Python学习与数据挖掘
0
Java版【数据结构与算法】的天花板,收藏好,慢慢看
Java 版数据结构与算法来了,堪称 java 版数据结构与算法的天花板,需要学数据结构与算法的,刷这套就可以了,目录如下,文末附教程地址。基础数据结构-001-二分查找-算法描述基础数据结构-002-二分查找-算法实现基础数据结构-003-二分查找-问题1-循环条件基础数据结构-004-二分查找-
路人甲Java
0
算法工程师的核心竞争力是什么?
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达链接:https://www.zhihu.com/question/527696166编辑:深度学习与计算机视觉声明:仅做学术分享,侵删作者:赵俊博 Jakehttps://www.zhihu.com/question/52769
小白学视觉
10
我想知道,高德和百度,谁的算法更准?
点击上方牲产力关注我在线提问,平常导航你是用高德还是百度呢?我个人喜欢用百度地图,媳妇儿是用高德,但而且她打车也会直接用高德,我还会再用滴滴来单独打车。总感觉导航嘛,不同软件应该大差不差,没想到一番搜罗还真有些奇奇怪怪的对比。01 大路vs小路江湖传闻,当百度还在大路上给你规划地图时,高德已经给你寻
TTTEED
2
一天肝600多篇文章,用数量对抗算法的不确定性
我写公众号七八年,总原创文章数量也只不过是650多篇。写爆文的一天就干出600多篇,多少有点震惊。背后是公众号平台进行功能调整后,从一天只能发一次文章,变改成了一天可以无限制发任意数量的文章。做公众号爆文写作变现的底层逻辑是基于公众号算法调整,从订阅规则改成了推荐机制,人人都有机会获得系统的推荐流量
python之禅
0
带你玩转Linux系统之lscpu命令
链接:https://bbs.huaweicloud.com/blogs/422603一、lscpu命令介绍lscpu 是一个 Linux 命令,用于显示CPU架构的详细信息。它可以用来查看 CPU 的型号、主频、架构、虚拟化支持等。二、lscpu命令的使用帮助2.1 命令格式lscpu [选项]2
良许Linux
0
C语言基础之动态内存操作汇总
来源:机器之心1、堆区空间申请#include <stdlib.h> //头文件void *malloc(size_t size);//函数size表示申请的空间字节数函数的返回值:成功:返回值空间起始地址失败:NULL特点:分配指定大小的内存空间;分配的内存空间是连续的;需要手动释放
良许Linux
0