leetcode 95.不同的二叉搜索樹 Ⅱ

首先分析一下什么是二叉搜索樹。因為我本科學習數據結構的時候就是單純背了一下題庫,考試非常簡單。現在額外補充學一些之前自己沒有學過的內容。有序向量可以二分查找,列表可以快速插入和刪除。二叉搜索樹可以實現按照關鍵碼訪問。call by key .數據表現為詞條,這可能和現實聯系更加緊密。比如說,我們在 csdn 里面搜索信息,一般都是搜索關鍵字。然后我們學習,很可能也是第一反應是一些關鍵字。之前寫的堆排序,感覺有點像二叉搜索樹,但是好像是優先隊列。我這壓根就不是復習,是學習。嗚嗚嗚。我太喜歡和別人交流具體知識點了,尤其是我擅長的東西。那些不擅長的東西,希望自己能盡快擅長起來。因為這真的比較重要。中序遍歷可以把標準的二叉樹垂直映射到 x 軸,所以二叉樹的查找類似于向量的二分查找。中序遍歷的順序是左子樹,根,右子樹。這個就是,輸入一個需要查找的元素 e ,然后 e 比當前遍歷到的元素小,就遍歷到左子樹。假設 e 比當前的遍歷到的元素大,就遍歷到右子樹。這里有一個前提,就是認為,左子樹是更小的元素,右子樹是更大的元素。太難了。不研究了。

直接在算法題里面體會得了。二叉搜索樹要求左子樹小于等于根節點,右子樹大于等于右子樹。能不能取到等號,問一下 deepseek 。標準的 bst 是不能取到等號的。

對于 n 個節點生成的二叉搜索樹的數量是 catalan(n) ,感覺時間復雜度分析考試應該不會考,算了。不學了。算了,感覺可以記一下,深入研究比較有意思。生成一棵二叉搜索樹需要線性的時間,總共有 catalan(n) 棵二叉搜索樹,所以時間復雜度是 O(n*catalan(n)) , c a t a l a n ( n ) = ( 2 n ) ! n ! ( n + 1 ) ! catalan(n)=\frac{(2n)!}{n!(n+1)!} catalan(n)=n!(n+1)!(2n)!? ,查了一下,是做了一個近似處理,然后得到的卡特蘭數的增長速度,其實就是第 n 個卡特蘭數的近似表示, 4 n n 3 2 ? π \frac {4^n}{n^{\frac32} \cdot \sqrt{\pi}} n23??π ?4n?

數學公式這么寫出來真帥啊!時間復雜度和空間復雜度均是 O ( 4 n n 1 2 ) O(\frac{4^n}{n^{\frac12}}) O(n21?4n?)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<TreeNode*> generateTrees(int start,int end){if(start>end){return {nullptr};}vector<TreeNode*> allTrees;for(int i=start;i<=end;i++){vector<TreeNode*> leftTrees=generateTrees(start,i-1);vector<TreeNode*> rightTrees=generateTrees(i+1,end);for(auto& left:leftTrees){for(auto& right:rightTrees){TreeNode* currTree=new TreeNode(i);currTree->left=left;currTree->right=right;allTrees.emplace_back(currTree);}}}return allTrees;}vector<TreeNode*> generateTrees(int n) {if(!n){return {};}return generateTrees(1,n);}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71721.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據安全防線:備份文件的重要性與自動化實踐

在數字化時代&#xff0c;信息已成為企業運營和個人生活的核心資源。無論是企業的核心數據、客戶的敏感信息&#xff0c;還是個人的珍貴照片、重要文檔&#xff0c;這些數據一旦丟失或受損&#xff0c;都可能帶來不可估量的損失。因此&#xff0c;備份文件的重要性不言而喻&…

碰一碰發視頻系統之寫卡功能開發了,支持OEM

一、引言 在碰一碰發視頻系統中&#xff0c;NFC&#xff08;Near Field Communication&#xff0c;近場通信&#xff09;技術扮演著關鍵角色。其中&#xff0c;寫卡功能是實現用戶與系統便捷交互的重要環節&#xff0c;通過將特定的視頻相關信息寫入 NFC 標簽&#xff0c;用戶…

【數據結構初階第十八節】八大排序系列(上篇)—[詳細動態圖解+代碼解析]

看似不起眼的日復一日&#xff0c;總會在某一天讓你看到堅持的意義。??????云邊有個稻草人-CSDN博客 hello&#xff0c;好久不見&#xff01; 目錄 一. 排序的概念及運用 1. 概念 2. 運用 3. 常見排序算法 二. 實現常見排序算法 1. 插入排序 &#xff08;1&…

python爬蟲系列課程8:js瀏覽器window對象屬性

python爬蟲系列課程8:js瀏覽器window對象屬性 一、JavaScript的組成二、document常見屬性對象三、navigator對象一、JavaScript的組成 JavaScript可以分為三個部分:ECMAScript標準、DOM、BOM。 ECMAScript標準:即JS的基本語法,JavaScript的核心,描述了語言的基本語法和數…

快速使用PPASR V3版不能語音識別框架

前言 本文章主要介紹如何快速使用PPASR語音識別框架訓練和推理&#xff0c;本文將致力于最簡單的方式去介紹使用&#xff0c;如果使用更進階功能&#xff0c;還需要從源碼去看文檔。僅需三行代碼即可實現訓練和推理。 源碼地址&#xff1a;https://github.com/yeyupiaoling/P…

cannon g3810打印機設置

現在AI這么厲害&#xff0c;是不是很少人來這里搜索資料了。 不過我還是寫一下。 買了一臺cannon g3810打印機。一直都用USB打印&#xff0c;今天突然想用手機打印。于是又折騰了兩個小時&#xff0c;終于折騰完了。 步驟如下&#xff1a; [1]打開官網&#xff0c;下載佳能…

使用 Arduino 和 ThingSpeak 通過 Internet 進行心跳監測

使用 Arduino 和 ThingSpeak 通過 Internet 進行心跳監測 在這個項目中,我們將使用 Arduino 制作一個心跳檢測和監測系統,該系統將使用脈搏傳感器檢測心跳,并在與其連接的 LCD 上顯示 BPM(每分鐘心跳次數)讀數。它還將使用 Wi-Fi 模塊ESP8266將讀數發送到 ThingSpeak 服務…

vulnhub靶場之【digitalworld.local系列】的snakeoil靶機

前言 靶機&#xff1a;digitalworld.local-snakeoil&#xff0c;IP地址為192.168.10.11 攻擊&#xff1a;kali&#xff0c;IP地址為192.168.10.6 kali采用VMware虛擬機&#xff0c;靶機選擇使用VMware打開文件&#xff0c;都選擇橋接網絡 這里官方給的有兩種方式&#xff0…

自行車的主要品牌

一、國際知名品牌&#xff08;專注運動與高端市場&#xff09; 捷安特&#xff08;GIANT&#xff09; 臺灣品牌&#xff0c;全球最大自行車制造商之一&#xff0c;覆蓋山地車、公路車、通勤車等多品類。 美利達&#xff08;MERIDA&#xff09; 臺灣品牌&#xff0c;以山地車…

C語言(隊列)

1、隊列的原理和作用 1、1 隊列的原理 隊列的原理其實就像一個管道&#xff0c;如果我們不斷的往管道里塞乒乓球&#xff0c;每個乒乓球在管道里就會排列一條隊列&#xff0c;先進去的乒乓球會先出來&#xff0c;這個就是隊列先進先出的規則 球從左邊進去的動作叫入列&#xf…

【C++算法】AVL樹的平衡之美:從理論到C++高效實現

AVL樹是一種自平衡二叉搜索樹,解決了普通二叉搜索樹在數據傾斜時的性能退化問題。本文深入探討了AVL樹的理論基礎,包括平衡因子的定義、旋轉操作的數學推導,并通過LaTeX公式分析其時間復雜度。接著,我們用C++實現了一個完整的AVL樹,包括插入、刪除和平衡調整的詳細代碼,附…

黑金風格人像靜物戶外旅拍Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程 針對人像、靜物以及戶外旅拍照片&#xff0c;運用 Lightroom 軟件進行風格化調色工作。旨在通過軟件中的多種工具&#xff0c;如基本參數調整、HSL&#xff08;色相、飽和度、明亮度&#xff09;調整、曲線工具等改變照片原本的色彩、明度、對比度等屬性&#xff0c;將…

ESP8266 NodeMCU 與 Atmega16 微控制器連接以發送電子郵件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信協議,如 UART、USART、SPI 和 I2C。由于其廣泛的社區支持和簡單性,它在機器人、汽車和自動化行業有廣泛的應用。 Atmega1…

【Hadoop】詳解HDFS

Hadoop 分布式文件系統(HDFS)被設計成適合運行在通用硬件上的分布式文件系統&#xff0c;它是一個高度容錯性的系統&#xff0c;適合部署在廉價的機器上&#xff0c;能夠提供高吞吐量的數據訪問&#xff0c;非常適合大規模數據集上的應用。為了做到可靠性&#xff0c;HDFS創建了…

2025 批量下載市場高標解讀/配置喵/wangdizhe 雪球帖子/文章導出excel和pdf

之前分享過文章2025 批量下載雪球和東方財富文章導出excel和pdf &#xff0c;今天整理分享下我下載過的一些雪球文章。 第1個號市場高標解讀 抓取下載的所有帖子excel數據包含文章日期&#xff0c;文章標題&#xff0c;文章鏈接&#xff0c;文章簡介&#xff0c;點贊數&#…

2022年《申論》第二題(河北A卷)

材料&#xff1a; “社區很大&#xff0c;共有安置房148棟&#xff0c;安置人口2.9萬人。人員眾多&#xff0c;而且原來都來自農村&#xff0c;群眾生活環境變化大&#xff0c;不適應。”春林易地搬遷安置點建成使用后&#xff0c;老單便來這里擔任春林街道辦主任。如何有效治…

Qt中實現多個QMainWindow同時顯示

在Qt中實現多個QMainWindow同時顯示&#xff0c;可通過以下方法實現&#xff1a; 一、直接顯示多個實例 必須使用new創建堆對象&#xff0c;避免棧對象因作用域結束被銷毀?。 int main(int argc, char *argv[]) {QApplication a(argc, argv);// 創建兩個獨立的主窗口QMainW…

從運動手環到醫療貼片,精密校平機正在重塑柔性電子器件的工業化生產標準

在柔性電子器件的制造領域&#xff0c;從運動手環到醫療貼片&#xff0c;精密校平機的應用正引領一場生產標準的變革。傳統的柔性電子器件生產過程中&#xff0c;材料的平整度控制往往不夠精確&#xff0c;導致產品質量參差不齊。然而&#xff0c;隨著精密校平機的引入&#xf…

AIP-161 域掩碼

編號161原文鏈接AIP-161: Field masks狀態批準創建日期2021-03-01更新日期2021-03-01 在&#xff08;使用AIP-134的Update或類似方法&#xff09;更新資源時&#xff0c;通常需要明確指定哪些域需要更新。服務可以忽略另外的域&#xff0c;即使用戶發送了值。 定義一種掩碼格…

掌握Kubernetes Network Policy,構建安全的容器網絡

在 Kubernetes 集群中&#xff0c;默認情況下&#xff0c;所有 Pod 之間都是可以相互通信的&#xff0c;這在某些場景下可能會帶來安全隱患。為了實現更精細的網絡訪問控制&#xff0c;Kubernetes 提供了 Network Policy 機制。Network Policy 允許我們定義一組規則&#xff0c…