mirror of
https://github.com/duke-git/lancet.git
synced 2026-03-01 00:35:28 +08:00
doc: build doc
This commit is contained in:
1 parent
ea036b3a81
commit
156fd2ef5d
248 files changed
+108747
-1
No files matched your search
@@ -0,0 +1,662 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Tree | Lancet</title>
|
||||
<meta name="description" content="一个强大的Go语言工具函数库">
|
||||
<link rel="preload stylesheet" href="/assets/style.d1d977d1.css" as="style">
|
||||
|
||||
<script type="module" src="/assets/app.531ff9c7.js"></script>
|
||||
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
|
||||
<link rel="modulepreload" href="/assets/chunks/framework.6e839c56.js">
|
||||
<link rel="modulepreload" href="/assets/chunks/theme.4451c782.js">
|
||||
<link rel="modulepreload" href="/assets/api_packages_datastructure_tree.md.1eeacf87.lean.js">
|
||||
<link rel="icon" type="image/png" href="/lancet_logo_mini.png">
|
||||
<meta name="theme-color" content="#5f67ee">
|
||||
<meta name="og:type" content="website">
|
||||
<meta name="og:locale" content="zh">
|
||||
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"dark",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||||
<meta property="og:url" content="https://golancet.cn">
|
||||
<meta property="og:description" content="一个强大的Go语言工具函数库">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><div class="Layout" data-v-324e8308><!--[--><!--]--><!--[--><span tabindex="-1" data-v-9c8615dd></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-9c8615dd> Skip to content </a><!--]--><!----><header class="VPNav" data-v-324e8308 data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-c8ceaf10><div class="container" data-v-c8ceaf10><div class="title" data-v-c8ceaf10><div class="VPNavBarTitle has-sidebar" data-v-c8ceaf10 data-v-2973dbb4><a class="title" href="/" data-v-2973dbb4><!--[--><!--]--><!--[--><img class="VPImage logo" src="/lancet_logo_mini.png" width="24" height="24" alt data-v-ab19afbb><!--]--><!--[-->Lancet<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-c8ceaf10><div class="curtain" data-v-c8ceaf10></div><div class="content-body" data-v-c8ceaf10><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:'Meta';" data-v-c8ceaf10><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-c8ceaf10 data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>首页</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/introduction.html" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/api/overview.html" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>API</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-6b19ffdd><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-6b19ffdd><span class="text" data-v-6b19ffdd><!----><span data-v-6b19ffdd>相关链接</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-6b19ffdd><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-6b19ffdd><div class="VPMenu" data-v-6b19ffdd data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/discussions" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->论坛<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/releases" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->更新日志<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/blob/main/CONTRIBUTING.zh-CN.md" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->参与贡献<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-c8ceaf10 data-v-ff4524ae data-v-6b19ffdd><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-6b19ffdd><span class="text" data-v-6b19ffdd><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-6b19ffdd><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg><!----><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-6b19ffdd><path d="M12,16c-0.3,0-0.5-0.1-Line truncated
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span></code></pre></div><div STYLE="page-break-after: always;"></div><h2 id="目录" tabindex="-1">目录 <a class="header-anchor" href="#目录" aria-label="Permalink to "目录""></a></h2><h3 id="_1-BSTree" tabindex="-1">1. BSTree <a class="header-anchor" href="#_1-BSTree" aria-label="Permalink to "1. BSTree""></a></h3><ul><li><a href="#NewBSTree">NewBSTree</a></li><li><a href="#BSTree_Insert">Insert</a></li><li><a href="#BSTree_Delete">Delete</a></li><li><a href="#BSTree_PreOrderTraverse">PreOrderTraverse</a></li><li><a href="#BSTree_InOrderTraverse">InOrderTraverse</a></li><li><a href="#BSTree_PostOrderTraverse">PostOrderTraverse</a></li><li><a href="#BSTree_LevelOrderTraverse">LevelOrderTraverse</a></li><li><a href="#BSTree_Depth">Depth</a></li><li><a href="#BSTree_HasSubTree">HasSubTree</a></li><li><a href="#BSTree_Print">Print</a></li></ul><div STYLE="page-break-after: always;"></div><h2 id="文档" tabindex="-1">文档 <a class="header-anchor" href="#文档" aria-label="Permalink to "文档""></a></h2><h2 id="_1-BSTree-1" tabindex="-1">1. BSTree <a class="header-anchor" href="#_1-BSTree-1" aria-label="Permalink to "1. BSTree""></a></h2><p>BSTree是一种二叉搜索树数据结构,其中每个节点有两个孩子,分别称为左孩子和右孩子。 在 BSTree 中:leftNode < rootNode < rightNode。 T类型应该实现lancetconstraints.Comparator。</p><h3 id="NewBSTree" tabindex="-1"><span id="NewBSTree">NewBSTree</span> <a class="header-anchor" href="#NewBSTree" aria-label="Permalink to "<span id="NewBSTree">NewBSTree</span>""></a></h3><p>返回BSTree指针实例</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> NewBSTree[T any](rootData T, comparator lancetconstraints.Comparator) </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">BSTree</span><span style="color:#F6F6F4;">[T any] </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> root </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">datastructure.TreeNode[T]</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> comparator lancetconstraints.Comparator</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">TreeNode</span><span style="color:#F6F6F4;">[T any] </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> Value T</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> Left </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">TreeNode[T]</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> Right </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">TreeNode[T]</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> NewBSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">](</span><span style="color:#393A34;">rootData T</span><span style="color:#999999;">,</span><span style="color:#393A34;"> comparator lancetconstraints</span><span style="color:#999999;">.</span><span style="color:#393A34;">Comparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">]</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> root </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">datastructure</span><span style="color:#999999;">.</span><span style="color:#393A34;">TreeNode</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">]</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> comparator lancetconstraints</span><span style="color:#999999;">.</span><span style="color:#393A34;">Comparator</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">TreeNode</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> Value T</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> Left </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">TreeNode</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">]</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> Right </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">TreeNode</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">]</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree) </span><span style="color:#7B7F8B;">//</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Insert" tabindex="-1"><span id="BSTree_Insert">Insert</span> <a class="header-anchor" href="#Insert" aria-label="Permalink to "<span id="BSTree_Insert">Insert</span>""></a></h3><p>将值插入二叉搜索树</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">Insert</span><span style="color:#F6F6F4;">(data T)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Insert</span><span style="color:#999999;">(</span><span style="color:#393A34;">data T</span><span style="color:#999999;">)</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">PreOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//6, 5, 2, 4, 7</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">PreOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//6, 5, 2, 4, 7</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Delete" tabindex="-1"><span id="BSTree_Delete">Delete</span> <a class="header-anchor" href="#Delete" aria-label="Permalink to "<span id="BSTree_Delete">Delete</span>""></a></h3><p>删除插入二叉搜索树中指定的值</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">Delete</span><span style="color:#F6F6F4;">(data T)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Delete</span><span style="color:#999999;">(</span><span style="color:#393A34;">data T</span><span style="color:#999999;">)</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Delete</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">PreOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//2, 5, 6, 7</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Delete</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">PreOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//2, 5, 6, 7</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="PreOrderTraverse" tabindex="-1"><span id="BSTree_PreOrderTraverse">PreOrderTraverse</span> <a class="header-anchor" href="#PreOrderTraverse" aria-label="Permalink to "<span id="BSTree_PreOrderTraverse">PreOrderTraverse</span>""></a></h3><p>按前序遍历树节点</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">PreOrderTraverse</span><span style="color:#F6F6F4;">() []T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">PreOrderTraverse</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">T</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">PreOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//6, 5, 2, 4, 7</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">PreOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//6, 5, 2, 4, 7</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="InOrderTraverse" tabindex="-1"><span id="BSTree_InOrderTraverse">InOrderTraverse</span> <a class="header-anchor" href="#InOrderTraverse" aria-label="Permalink to "<span id="BSTree_InOrderTraverse">InOrderTraverse</span>""></a></h3><p>按中序遍历树节点</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">InOrderTraverse</span><span style="color:#F6F6F4;">() []T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">InOrderTraverse</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">T</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">InOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//2, 4, 5, 6, 7</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">InOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//2, 4, 5, 6, 7</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="PostOrderTraverse" tabindex="-1"><span id="BSTree_PostOrderTraverse">PostOrderTraverse</span> <a class="header-anchor" href="#PostOrderTraverse" aria-label="Permalink to "<span id="BSTree_PostOrderTraverse">PostOrderTraverse</span>""></a></h3><p>按后序遍历树节点</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">PostOrderTraverse</span><span style="color:#F6F6F4;">() []T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">PostOrderTraverse</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">T</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">PostOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//5, 2, 4, 7, 6</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">PostOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//5, 2, 4, 7, 6</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="LevelOrderTraverse" tabindex="-1"><span id="BSTree_LevelOrderTraverse">LevelOrderTraverse</span> <a class="header-anchor" href="#LevelOrderTraverse" aria-label="Permalink to "<span id="BSTree_LevelOrderTraverse">LevelOrderTraverse</span>""></a></h3><p>按节点层次遍历树节点</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">LevelOrderTraverse</span><span style="color:#F6F6F4;">() []T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">LevelOrderTraverse</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">T</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">LevelOrderTraverse</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//6, 5, 7, 2, 4</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">LevelOrderTraverse</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//6, 5, 7, 2, 4</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Depth" tabindex="-1"><span id="BSTree_Depth">Depth</span> <a class="header-anchor" href="#Depth" aria-label="Permalink to "<span id="BSTree_Depth">Depth</span>""></a></h3><p>获取树的深度</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">Depth</span><span style="color:#F6F6F4;">() </span><span style="color:#97E1F1;font-style:italic;">int</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Depth</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">Depth</span><span style="color:#F6F6F4;">()) </span><span style="color:#7B7F8B;">//4</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Depth</span><span style="color:#999999;">())</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//4</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="HasSubTree" tabindex="-1"><span id="BSTree_HasSubTree">HasSubTree</span> <a class="header-anchor" href="#HasSubTree" aria-label="Permalink to "<span id="BSTree_HasSubTree">HasSubTree</span>""></a></h3><p>判断给定树是否是子树</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">HasSubTree</span><span style="color:#F6F6F4;">(subTree </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#97E1F1;font-style:italic;">bool</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">HasSubTree</span><span style="color:#999999;">(</span><span style="color:#393A34;">subTree </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">bool</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">8</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">9</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> superTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> subTree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> subTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> subTree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(superTree.</span><span style="color:#97E1F1;">HasSubTree</span><span style="color:#F6F6F4;">(subTree)) </span><span style="color:#7B7F8B;">//true</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(subTree.</span><span style="color:#97E1F1;">HasSubTree</span><span style="color:#F6F6F4;">(superTree)) </span><span style="color:#7B7F8B;">//false</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">superTree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">8</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">9</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">subTree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> subTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> subTree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">superTree</span><span style="color:#999999;">.</span><span style="color:#998418;">HasSubTree</span><span style="color:#999999;">(</span><span style="color:#393A34;">subTree</span><span style="color:#999999;">))</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//true</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">subTree</span><span style="color:#999999;">.</span><span style="color:#998418;">HasSubTree</span><span style="color:#999999;">(</span><span style="color:#393A34;">superTree</span><span style="color:#999999;">))</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//false</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Print" tabindex="-1"><span id="BSTree_Print">Print</span> <a class="header-anchor" href="#Print" aria-label="Permalink to "<span id="BSTree_Print">Print</span>""></a></h3><p>打印树结构</p><p><b>函数签名:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (t </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">BSTree[T]) </span><span style="color:#62E884;">Print</span><span style="color:#F6F6F4;">()</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">t </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">BSTree</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Print</span><span style="color:#999999;">()</span></span></code></pre></div><p><b>示例:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> tree </span><span style="color:#DEE492;">"</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#DEE492;">"</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">intComparator</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (c </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">intComparator) </span><span style="color:#62E884;">Compare</span><span style="color:#F6F6F4;">(v1, v2 any) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val1, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v1.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> val2, _ </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> v2.(</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;"><</span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">-</span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> } </span><span style="color:#F286C4;">else</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">if</span><span style="color:#F6F6F4;"> val1 </span><span style="color:#F286C4;">></span><span style="color:#F6F6F4;"> val2 {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> tree.</span><span style="color:#97E1F1;">NewBSTree</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">6</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">&</span><span style="color:#F6F6F4;">intComparator{})</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">7</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">5</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> bstree.</span><span style="color:#97E1F1;">Insert</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">4</span><span style="color:#F6F6F4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(bstree.</span><span style="color:#97E1F1;">Print</span><span style="color:#F6F6F4;">())</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// 6</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// / \</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// / \</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// / \</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// / \</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// 5 7</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// /</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// /</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// 2</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// \</span></span>
|
||||
<span class="line"><span style="color:#7B7F8B;">// 4</span></span>
|
||||
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#59873A;">tree</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">"</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/datastructure/tree</span><span style="color:#B5695999;">"</span></span>
|
||||
<span class="line"><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">intComparator</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#999999;">{}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">c </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Compare</span><span style="color:#999999;">(</span><span style="color:#393A34;">v1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> v2 any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val1</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v1</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">val2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">_</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> v2</span><span style="color:#999999;">.(</span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;"><</span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">-</span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">else</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">if</span><span style="color:#393A34;"> val1 </span><span style="color:#AB5959;">></span><span style="color:#393A34;"> val2 </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">bstree</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> tree</span><span style="color:#999999;">.</span><span style="color:#998418;">NewBSTree</span><span style="color:#999999;">(</span><span style="color:#2F798A;">6</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">&</span><span style="color:#393A34;">intComparator</span><span style="color:#999999;">{})</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">7</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">5</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"><span style="color:#393A34;"> bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Insert</span><span style="color:#999999;">(</span><span style="color:#2F798A;">4</span><span style="color:#999999;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">bstree</span><span style="color:#999999;">.</span><span style="color:#998418;">Print</span><span style="color:#999999;">())</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// 6</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// / \</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// / \</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// / \</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// / \</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// 5 7</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// /</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// /</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// 2</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// \</span></span>
|
||||
<span class="line"><span style="color:#A0ADA0;">// 4</span></span>
|
||||
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-5774f702><!--[--><!--]--><div class="edit-info" data-v-5774f702><div class="edit-link" data-v-5774f702><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/duke-git/lancet/edit/v2/docs/api/packages/datastructure/tree.md" target="_blank" rel="noreferrer" data-v-5774f702><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-5774f702><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> 对本页提出修改建议<!--]--></a></div><!----></div><nav class="prev-next" data-v-5774f702><div class="pager" data-v-5774f702><a class="pager-link prev" href="/api/packages/datastructure/heap.html" data-v-5774f702><span class="desc" data-v-5774f702>上一页</span><span class="title" data-v-5774f702>堆</span></a></div><div class="pager" data-v-5774f702><a class="pager-link next" href="/api/packages/datastructure/set.html" data-v-5774f702><span class="desc" data-v-5774f702>下一页</span><span class="title" data-v-5774f702>集合</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-324e8308 data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Released under the MIT License.</p><p class="copyright" data-v-e4279f1c>Copyright © 2023-present Duke Du</p></div></footer><!--[--><!--]--></div></div>
|
||||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_overview.md\":\"0734e445\",\"api_packages_compare.md\":\"046b68ac\",\"api_packages_algorithm.md\":\"a5fd6586\",\"api_packages_concurrency.md\":\"02593d84\",\"api_packages_condition.md\":\"2519cae3\",\"api_packages_convertor.md\":\"3dc6f3b4\",\"api_packages_datastructure_copyonwritelist.md\":\"1a351580\",\"api_packages_datastructure_hashmap.md\":\"310e4711\",\"api_packages_datastructure_heap.md\":\"749f37d9\",\"api_packages_cryptor.md\":\"2d4965d7\",\"api_packages_datastructure_link.md\":\"53b556c9\",\"api_packages_datastructure_list.md\":\"c39c7138\",\"api_packages_datastructure_set.md\":\"8bd77304\",\"api_packages_datastructure_queue.md\":\"55dce1c4\",\"api_packages_datastructure_stack.md\":\"9d7b51a7\",\"api_packages_datastructure_tree.md\":\"1eeacf87\",\"api_packages_datetime.md\":\"53f898b5\",\"api_packages_formatter.md\":\"8820c0cf\",\"api_packages_fileutil.md\":\"94d3797c\",\"api_packages_function.md\":\"5cbb4c31\",\"api_packages_maputil.md\":\"68434477\",\"api_packages_pointer.md\":\"3465a655\",\"api_packages_random.md\":\"c5785d61\",\"api_packages_retry.md\":\"746cf8ed\",\"api_packages_mathutil.md\":\"274658f0\",\"api_packages_netutil.md\":\"d9f6ee6d\",\"api_packages_struct.md\":\"bdd9b8b9\",\"api_packages_stream.md\":\"f8a1897d\",\"api_packages_system.md\":\"3c9cc0ec\",\"api_packages_slice.md\":\"f48c775b\",\"en_api_overview.md\":\"1eb70105\",\"api_packages_strutil.md\":\"2574c069\",\"api_packages_xerror.md\":\"b2d37d2c\",\"api_packages_validator.md\":\"1f431893\",\"en_api_packages_compare.md\":\"409d8174\",\"api_packages_tuple.md\":\"04b31a3e\",\"en_api_packages_algorithm.md\":\"4b3abf4d\",\"en_api_packages_condition.md\":\"a164dfc9\",\"en_api_packages_concurrency.md\":\"4ccb7541\",\"en_api_packages_convertor.md\":\"4d1b1ca4\",\"en_api_packages_datastructure_hashmap.md\":\"55db8537\",\"en_api_packages_datastructure_copyonwritelist.md\":\"c4ab8b5a\",\"en_api_packages_datastructure_heap.md\":\"638dd5d1\",\"en_api_packages_cryptor.md\":\"83b35674\",\"en_api_packages_datastructure_link.md\":\"062572a5\",\"en_api_packages_datastructure_list.md\":\"d467285d\",\"en_api_packages_datastructure_queue.md\":\"88ad36da\",\"en_api_packages_datastructure_set.md\":\"963fc914\",\"en_api_packages_datastructure_stack.md\":\"1998c8dc\",\"en_api_packages_datastructure_tree.md\":\"e0a47a13\",\"en_api_packages_formatter.md\":\"00b1f98e\",\"en_api_packages_function.md\":\"0aff7e60\",\"en_api_packages_fileutil.md\":\"fea45f47\",\"en_api_packages_datetime.md\":\"32edaec1\",\"en_api_packages_pointer.md\":\"51cdc76e\",\"en_api_packages_random.md\":\"09d4734b\",\"en_api_packages_retry.md\":\"9ae8caac\",\"en_api_packages_mathutil.md\":\"cd3e0e74\",\"en_api_packages_maputil.md\":\"4fc65b0e\",\"en_api_packages_netutil.md\":\"4a71afe0\",\"en_api_packages_struct.md\":\"ebe3b9e2\",\"en_api_packages_stream.md\":\"99e473e0\",\"en_api_packages_system.md\":\"b89ed647\",\"en_api_packages_slice.md\":\"1a1b5495\",\"guide_introduction.md\":\"c4fdb40e\",\"index.md\":\"3fde7444\",\"en_guide_introduction.md\":\"d2712e12\",\"en_index.md\":\"3bc9892c\",\"en_guide_getting_started.md\":\"fbd5d30c\",\"guide_getting_started.md\":\"acfc7802\",\"en_api_packages_xerror.md\":\"5cac58cd\",\"en_api_packages_strutil.md\":\"2bfcfdc2\",\"en_api_packages_validator.md\":\"fa34c2f2\",\"en_api_packages_tuple.md\":\"ce828c9e\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Lancet\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":\"dark\",\"themeConfig\":{\"logo\":{\"src\":\"/lancet_logo_mini.png\",\"width\":24,\"height\":24},\"outline\":[2,3],\"search\":{\"provider\":\"local\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/duke-git/lancet\"}],\"footer\":{\"copyright\":\"Copyright © 2023-present Duke Du\",\"message\":\"Released under the MIT License.\"}},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-CN\",\"link\":\"/\",\"description\":\"一个强大的Go语言工具函数库\",\"head\":[[\"meta\",{\"property\":\"og:url\",\"content\":\"https://golancet.cn\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"一个强大的Go语言工具函数库\"}]],\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/duke-git/lancet/edit/v2/docs/:path\",\"text\":\"对本页提出修改建议\"},\"outline\":{\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\",\"activeMatch\":\"^/\"},{\"text\":\"指南\",\"link\":\"/guide/introduction\",\"activeMatch\":\"^/guide/\"},{\"text\":\"API\",\"link\":\"/api/overview\",\"activeMatch\":\"^/api/\"},{\"text\":\"相关链接\",\"items\":[{\"text\":\"论坛\",\"link\":\"https://github.com/duke-git/lancet/discussions\"},{\"text\":\"更新日志\",\"link\":\"https://github.com/duke-git/lancet/releases\"},{\"text\":\"参与贡献\",\"link\":\"https://github.com/duke-git/lancet/blob/mLine truncated
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user