前面一篇文章已经说过关于用LaTeX画树形结构的问题,那个二叉树相对比较简单,没有替他的元素混杂。这里再画一个复杂点的案例,添加一些可能在实际应用中需要的元素,比如有头节点,表示整个二叉树的开始位置等。

在每个节点是否可以划分为多个,这也是一个常见的需求,具体的实现效果如图所示。

下面是实现过程的主要代码部分,每条代码的具体语法这里不一一解释了,通过规范的排版,基本上已经将每条代码的含义解释清楚了,请耐心点阅读。这些代码可以直接运行,实现如图所示效果,可以当做模板应用。

\begin{tikzpicture}[scale = 1.5, transform shape, thick,every node/.style = {draw, circle, minimum size = 10mm},grow = down,  % alignment of characterslevel 1/.style = {sibling distance=3cm},level 2/.style = {sibling distance=4cm}, level 3/.style = {sibling distance=2cm}, level distance = 1.25cm]\node[fill = gray!40, shape = rectangle, rounded corners,minimum width = 2cm, font = \sffamily] {Coin flipping} child { node[shape = circle split, draw, line width = 1pt,minimum size = 10mm, inner sep = 0mm, font = \sffamily\large,rotate=30] (Start){ \rotatebox{-30}{H} \nodepart{lower} \rotatebox{-30}{T}}child {   node [head] (A) {}child { node [head] (B) {}}child { node [tail] (C) {}}}child {   node [tail] (D) {}child { node [head] (E) {}}child { node [tail] (F) {}}}};% Filling the root (Start)\begin{scope}[on background layer, rotate=30]\fill[head] (Start.base) ([xshift = 0mm]Start.east) arc (0:180:5mm)-- cycle;\fill[tail] (Start.base) ([xshift = 0pt]Start.west) arc (180:360:5mm)-- cycle;\end{scope}% Labels\begin{scope}[nodes = {draw = none}]\path (Start) -- (A) node [near start, left]  {$0.5$};\path (A)     -- (B) node [near start, left]  {$0.5$};\path (A)     -- (C) node [near start, right] {$0.5$};\path (Start) -- (D) node [near start, right] {$0.5$};\path (D)     -- (E) node [near start, left]  {$0.5$};\path (D)     -- (F) node [near start, right] {$0.5$};\begin{scope}[nodes = {below = 11pt}]\node [name = X] at (B) {$0.25$};\node            at (C) {$0.25$};\node [name = Y] at (E) {$0.25$};\node            at (F) {$0.25$};\end{scope}\draw[densely dashed, rounded corners, thin](X.south west) rectangle (Y.north east);\end{scope}\end{tikzpicture}

在导言区添加几行代码

\usepackage{tikz}
\usetikzlibrary{chains,scopes,positioning,backgrounds,shapes,fit,shadows,calc,arrows.meta}
\RequirePackage{amsmath,mathrsfs,amsfonts,amssymb}
\tikzset{head/.style = {fill = orange!90!blue,label = center:\textsf{\Large H}},tail/.style = {fill = blue!70!yellow, text = black,label = center:\textsf{\Large T}}
}

【LaTeX应用】画个复杂的二叉树相关推荐

  1. latex 中画✔(打勾)

    latex 中画✔(打勾) $\surd$

  2. 如何在 LaTeX 中画一个树状图(使用tikz和tikz-qtree包中的宏绘制树、森林、二叉树)

    简单介绍 在计算机相关的文章中,树状图是最常见的几种图之一.树状图经常被用来用来演示结构.层次.算法等内容.而二叉树是最基础的树状图之一,掌握二叉树的画法就可以用图像展示一些算法或者数据结构了. 在 ...

  3. 在Graphviz中画出好看的二叉树、B树、如何使用pos变量

    一.二叉树 (一) 前提 使用过Graphviz画二叉树的同学都会发现,画出来的东西没有像教材那样规规矩矩,对于有强迫症的同学来说,可以采用以下思路进行完善 (二) IDEA + Dot @start ...

  4. LaTeX TIKZ画markov转移图(有限状态机FSM图)

    作业要画markov转移图,找了半天TIKZ怎么画FSM,代码记录一下 \documentclass[a4paper,UTF8]{article} \usepackage{tikz} \usetikz ...

  5. 二叉树---根据【先序、中序序列】and【中序、后序序列】,画出二叉树!

    前提说明 : 经典例题(1) : 例:已知先序序列和中序序列分别为:         先序序列:18    14    7    3    11    22     35      27 中序序列: ...

  6. 关于根据先序遍历和中序遍历画二叉树的方法

    一些新同学在画二叉树时往往会摸不着头脑不知道怎么画,我也是刚刚学,接下来给你们提供我自己研究出来的两种定理,也欢迎各位对此批评指点: ①ZYT_先序遍历定理_前字母必比后字母平级或更高(能判断左右则不 ...

  7. 二叉树的相关性质及其前中后层序遍历实现

    写在前面: 本文前面部分介绍相关概念,后面部分是程序. 点击下面链接查看更多! 点击此处发现更多 一.二叉树的概念 1.1 相关术语 ①结点:包含一个数据元素及若干指向子树分支的信息 . ②结点的度: ...

  8. 数据结构与算法一 - 二叉树基础

    前言 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点.一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列.在学习与总结的同时更加深入的了解掌握二叉树.本系列文章将 ...

  9. python 绘图与可视化 Graphviz 二叉树 、 error: Microsoft Visual C++ 14.0 is required

    需要对二叉树的构建过程进行可视化,发现了这个Graphviz软件,他对描绘数据间的关系十分擅长. 下载链接:https://graphviz.gitlab.io/_pages/Download/Dow ...

最新文章

  1. 视觉在无人驾驶中的应用及分类_机器视觉可以应用于水果自动分类拣选,你见过吗?...
  2. WSL 使用者仍应该使用杀毒软件
  3. Arduino基本人机接口:点阵LED、汉字库、键盘
  4. lepus mysql 复制监控_MySQL数据库之CentOS搭建lepus3.8监控MySQL
  5. ElasticSearch探索之路(四)索引原理:倒排索引、列式存储、Fielddata、索引压缩、联合索引
  6. OpenWrt配置篇
  7. 1.3编程基础之算术表达式与顺序执行 09 与圆相关的计算
  8. MDF文件在SQL Server数据库中恢复技术
  9. Android10加入APEX目的
  10. 【React Native 安卓开发】----(Flexbox布局)【第二篇】
  11. 电脑麦克风插孔是哪个_科唛BoomXD 2.4G数字无线麦克风
  12. HTML+CSS网页设计期末课程大作业:【中国传统文化——古诗词】学生网页设计作品 dreamweaver作业静态HTML网页设计
  13. 空间坐标系对应EPSG编号
  14. 好用的组件Vue Tags Input 输入框标签
  15. vue中watch不触发、不生效的解决办法及原理
  16. 手机保护壳让手机信号变更差?
  17. Azure Messaging
  18. python 上标_python – 使用上标的matplotlib刻度轴表示法
  19. CreateEvent
  20. java基于springboot二手物品交易网站

热门文章

  1. jdk7(jdk7u80是什么版本)
  2. java 匿名类调用方法_Java匿名内部类使用与示例
  3. UDA1341声卡驱动
  4. 友声电子秤手机app_友声TM-xA条码秤数据管理软件V2.53D
  5. 基于WEB工作流管理系统的设计与实现
  6. ueditor ie8兼容性问题
  7. Mac 配置 java 8_mac系统下载、安装、使用Java8教程
  8. MAC安装向日葵软件 远程协助设置1
  9. 用c语言编写一个酒店点菜菜单,C课程设计报告酒店点菜管理系统设计.doc
  10. C语言 图书销售管理系统