日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【LaTex】3.2 数据结构(TikZ)

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LaTex】3.2 数据结构(TikZ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Path繪圖
    • 基本語法
    • 代碼例子
    • 編譯效果
  • Tree繪圖
    • 基本語法
    • 代碼例子
    • 編譯效果

??除Graphviz外,TikZ也是可以進行數據結構繪圖的。以同樣的紅黑樹為例子,用TikZ重新實現一遍。Graphviz的基本模型就是節點和邊,這和圖算法的兩個最基本概念是一樣的。而Tikz也是這樣,但是tikz在數據結構繪圖方法有兩種方法:path和tree。

Path繪圖

基本語法

??節點,命令語法為:

\node[name=\name] at (\x,\y) {\content};

??當然,節點除了name這個屬性外,還有填充顏色,字體顏色,形狀等樣式屬性。
??,命令語法為:

\draw[->] (\from) -> (\to);

??循環語句,語法為:

\foreach \var1/\var2/\var3/... in {data1/data2/data3,...}{code...; }

代碼例子

??以紅黑樹為例子,Tikz代碼要比graphviz代碼簡潔很多:

\documentclass[UTF8, a4paper,12pt]{article} \usepackage{tikz} \begin{document}\begin{tikzpicture}\foreach \x/\y/\name in {0/4/0,3/4/4,4/8/5,5/4/6,7/4/8}{\node[white,fill=black,shape=circle,name=\name] at (\x,\y) {\name};}\foreach \x/\y/\name in {2/6/3,6/6/7,1/2/2,8/2/9}{\node[white,fill=red,shape=circle,name=\name] at (\x,\y) {\name};}\foreach \from/\to in {5/3,5/7,3/0,3/4,0/2,5/7,7/6,7/8,8/9} {\draw[->] (\from) -- (\to);}\end{tikzpicture} \end{document}

編譯效果


??Tikz視覺效果是完全不屬于graphviz的。

Tree繪圖

??Tree繪圖重要的關鍵字是child。而且child支持嵌套,所以就可以使用child輕松地畫出紅黑樹,不需要手動計算每個節點的坐標了。child的基本語法是下面這個樣子:

\documentclass[tikz,11pt]{article} \usepackage{tikz}\begin{document}\begin{tikzpicture}\node {A}child {node {B}}child {node {C}}child {node {D}};\end{tikzpicture} \end{document}

??編譯效果如下:

基本語法

??sibling distance是一個重要的配置,單位可以是cm,也可以是pt等長度單位。
??anchor,控制子節點的方向,取值為west和east,但是要注意,是反向的,也就是說east是向左的,而west才是向右的。
??edge from parent,控制邊的樣式,比如可以修改邊的顏色,控制線條的樣式,還可以給邊加上文字,如下面的例子:

\documentclass[tikz,11pt]{article} \usepackage{tikz} \usepackage{ctex} \begin{document}\begin{tikzpicture}\node {7}child {node {2}}child {node {9}edge from parent [blue,dashed] node {刪除}};\end{tikzpicture} \end{document}

??編譯效果如下:

代碼例子

??這里我用tree語法把上面的紅黑樹實現一下,代碼如下:

\documentclass[tikz,11pt]{article} \usepackage{tikz}\begin{document}\begin{tikzpicture}[level 1/.style={sibling distance = 2.5cm},level 2/.style={sibling distance = 1.5cm}]\node [white,fill=black,shape=circle] {5}child {node [white,fill=red,shape=circle] {3}child {node [white,fill=black,shape=circle] {0}child [anchor = west] { node [white,fill=red,shape=circle] {2}}}child {node [white,fill=black,shape=circle] {4}}}child {node [white,fill=red,shape=circle] {7}child {node [white,fill=black,shape=circle] {6}}child {node [white,fill=black,shape=circle] {8}child [anchor = west] { node [white,fill=red,shape=circle] {9}}}};\end{tikzpicture} \end{document}

編譯效果

總結

以上是生活随笔為你收集整理的【LaTex】3.2 数据结构(TikZ)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。