【一刷《劍指Offer》】面試題 27:二叉搜索樹與雙向鏈表

牛客對應題目鏈接:二叉搜索樹與雙向鏈表_牛客題霸_牛客網 (nowcoder.com)

力扣對應題目鏈接:LCR 155. 將二叉搜索樹轉化為排序的雙向鏈表 - 力扣(LeetCode)


一、《劍指 Offer》對應內容


二、分析題目

上面力扣上的這道題目和牛客上的不太一樣,力扣上的是雙向循環鏈表,而牛客上的并不是循環鏈表,所以返回的是頭結點。


三、代碼

//牛客
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:void InOrderConvert(TreeNode* cur, TreeNode*& prev) {if(cur==nullptr) return;InOrderConvert(cur->left, prev);cur->left=prev;if(prev)prev->right=cur;prev=cur;InOrderConvert(cur->right, prev);}TreeNode* Convert(TreeNode* pRootOfTree) {TreeNode* prev=nullptr;InOrderConvert(pRootOfTree, prev);TreeNode* head=pRootOfTree;while(head && head->left)head=head->left;return head;}
};
//力扣
/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node() {}Node(int _val) {val = _val;left = NULL;right = NULL;}Node(int _val, Node* _left, Node* _right) {val = _val;left = _left;right = _right;}
};
*/
class Solution {
public:void InOrderConvert(Node* cur, Node*& prev) {if(cur==nullptr) return;InOrderConvert(cur->left, prev);cur->left=prev;if(prev)prev->right=cur;prev=cur;InOrderConvert(cur->right, prev);}Node* treeToDoublyList(Node* root) {if(root==nullptr) return nullptr;Node* prev=nullptr;InOrderConvert(root, prev);Node* head=root;Node* tail=root;while(head && head->left)head=head->left;while(tail && tail->right)tail=tail->right;head->left=tail;tail->right=head;return head;}
};//另一種寫法
/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node() {}Node(int _val) {val = _val;left = NULL;right = NULL;}Node(int _val, Node* _left, Node* _right) {val = _val;left = _left;right = _right;}
};
*/
class Solution {
private:Node* prev;Node* head;
public:void dfs(Node* cur){if(cur==NULL) return;dfs(cur->left);if(prev) prev->right=cur;else head=cur;cur->left=prev;prev=cur;dfs(cur->right);}Node* treeToDoublyList(Node* root) {if(root==NULL) return NULL;dfs(root);head->left=prev;prev->right=head;return head;}
};

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

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

相關文章

AGM DAP-LINK 離線燒錄報錯信息分析

DAP-LINK 支持離線燒錄。 即:先把要燒錄的bin 燒錄到DAP-LINK 中;然后DAP-LINK 可以脫離PC,上電后通過按鍵對目標板進行燒錄。 CMSIS-DAP模式 跳線JGND斷開,狀態LED D4快閃,D3常亮(串口狀態)。…

deepin開發web前端:探索、挑戰與無限可能

deepin開發web前端:探索、挑戰與無限可能 在數字化浪潮洶涌的時代,Web前端作為連接用戶與數字世界的橋梁,其重要性日益凸顯。而deepin作為一款優秀的開源操作系統,為Web前端開發者提供了廣闊的舞臺。本文將圍繞deepin開發Web前端…

接口設計的最佳實踐-下篇

大多數程序員,做得最多的事,也不過是寫接口這件事而已。 今天繼續總結下接口設計需要注意的點。盡量每種都給出具體的場景、案例等,希望大家能有所收獲。 1、接口冪等 冪等性:是指一個操作或者一個服務,無論執行多少…

小程序怎樣進行本地存儲的讀、寫、刪、清?

小程序進行本地存儲的讀、寫、刪、清操作,可以通過微信小程序提供的API來實現。這些API分為同步和異步兩種類型,以滿足不同的使用場景和需求。 同步操作 同步操作會阻塞后續的代碼執行,直到操作完成。 寫入本地緩存(寫&#xf…

Vue3 - Mac系統用文本編輯寫html不顯示效果的坑

平時在win系統下,可以直接對文本進行編輯,非常的舒服。 在mac系統中,也有類似的功能,就是文本編輯,沒想到居然還有坑。 這是我mac系統中創建的html文件,想著沒有幾行代碼,就沒有開編輯器了&am…

C語言 | Leetcode C語言題解之第125題驗證回文串

題目&#xff1a; 題解&#xff1a; bool isalumn(char c) {return (c > a && c < z) || (c > A && c < Z) || (c > 0 && c < 9); }bool isPalindrome(char* s) {for (int left 0, right strlen(s) - 1; left < right; left, …

【數據庫系統概論】事務

概述 在數據庫系統中&#xff0c;事務&#xff08;Transaction&#xff09;是指一組作為單個邏輯工作單元執行的操作。這些操作要么全部成功&#xff08;提交&#xff09;&#xff0c;要么全部失敗&#xff08;回滾&#xff09;。事務的主要目的是確保數據庫的完整性和一致性&…

AI與NLP的完美結合:揭秘ChatGPT

AI與NLP的完美結合&#xff1a;揭秘ChatGPT 一、AI大模型的發展歷程 AI大模型的發展可追溯到早期的深度學習技術。深度學習通過多層神經網絡處理復雜的數據模式&#xff0c;顯著提升了圖像識別、語音識別等領域的性能。隨后&#xff0c;研究人員將注意力轉向NLP&#xff0c;開…

【傳知代碼】多視圖3D目標檢測位置嵌入變換(論文復現)

前言&#xff1a;三維目標檢測技術正逐漸成為計算機視覺領域的重要研究方向。特別是在自動駕駛、增強現實&#xff08;AR&#xff09;、虛擬現實&#xff08;VR&#xff09;以及機器人導航等應用中&#xff0c;對三維空間內目標的精準檢測與定位顯得尤為重要。然而&#xff0c;…

人臉解鎖優化關鍵過程

一.人臉解鎖的關鍵過程 1. 按下power鍵 2. 屏幕點亮 3. 打開前攝 4. 獲取第一幀并傳給算法 5. 算法完成并返回結果 6. 解鎖完成并關閉相機 二. 相機優化點 1. 定制人臉解鎖自己的pipeline,去掉不必要的node,理論上只需要一個preview的pipeline 2. 使用AE warm up&#xff0c;減…

SAP_SD模塊-銷售交貨并開票后發現物料沒維護價格的完整處理方法(含POD功能)

銷售流程完結后&#xff0c;發現物料價格沒維護時&#xff0c;如何處理 一、業務背景&#xff1a; 1、問題發現時間&#xff1a;2024年6月2日&#xff1b; 2、問題描述&#xff1a; 2024年5月份的單據業務存在交貨成本和開票成本為0的單據&#x…

【JavaScript腳本宇宙】揭秘HTTP請求庫:深入理解它們的特性與應用

深度揭秘&#xff1a;六大HTTP請求庫的比較與應用 前言 在這篇文章中&#xff0c;我們將探討六種主要的HTTP請求庫。這些庫為處理網絡請求提供了不同的工具和功能&#xff0c;包括Axios、Fetch API、Request、SuperAgent、Got和Node-fetch。通過本文&#xff0c;你將對每個庫…

PyCharm如何更換解析器為Anaconda,如何自己切換python環境

自己使用了Anaconda創建了一個環境&#xff1a; 如何在工具PyCharm中切換自定義的python環境呢&#xff1f; 1. 點擊 設置 2. 項目&#xff1a;python - Python解析器 此時會發現&#xff0c;只有一個默認的版本。 3. 點擊 添加解析器 - 添加本地解析器 4. 選擇 conda 環境…

AI智能語音機器人系統如何對接科大訊飛接口

關于AI語音機器人的介紹有很多&#xff0c;但是由于商業化&#xff0c;沒有一個能真正說明白的&#xff0c;當然&#xff0c;我們搭建的AI智能機器人系統也是商業化的&#xff0c;畢竟業務是做這方面的&#xff0c;但是價格絕對是公道的&#xff0c;廢話不多說了&#xff0c;我…

探索API接口:技術深度解析與應用實踐

在當今的軟件開發和數據交換領域&#xff0c;API&#xff08;應用程序編程接口&#xff09;已經成為了一個不可或缺的工具。它允許不同的軟件應用程序或組件之間進行交互和通信&#xff0c;從而實現了數據的共享和功能的擴展。本文將深入探討API接口的技術原理、設計原則以及在…

Qt各發布版本介紹與選擇

一.Qt各個主要版本介紹 1.Qt4 Qt4的第一個版本是Qt 4.0&#xff0c;發布于2005年6月1日。 Qt 4的最后一個版本是Qt 4.8.7&#xff0c;發布時間是2015年6月10日。 2.Qt5 &#xff08;1&#xff09;Qt5的第一個版本是Qt 5.0&#xff0c;發布于2012年12月19日。 &#xff08;2&…

ubuntu安裝notion

一、背景&#xff1a; 不用windwos系統&#xff0c;完全可以&#xff0c;然后基本軟件都有&#xff0c;怎么安裝notion呢 二、步驟 1. 更新源 echo "deb [trustedyes] https://apt.fury.io/notion-repackaged/ /" | sudo tee /etc/apt/sources.list.d/notion-repa…

基于字典樹可視化 COCA20000 詞匯

COCA20000 是美國當代語料庫中最常見的 20000 個詞匯&#xff0c;不過實際上有一些重復&#xff0c;去重之后大概是 17600 個&#xff0c;這些單詞是很有用&#xff0c;如果能掌握這些單詞&#xff0c;相信會對英語的能力有一個較大的提升。我很早就下載了這些單詞&#xff0c;…

基于Django的博客系統之用HayStack連接elasticsearch增加搜索功能(五)

上一篇&#xff1a;搭建基于Django的博客系統數據庫遷移從Sqlite3到MySQL&#xff08;四&#xff09; 下一篇&#xff1a;基于Django的博客系統之增加類別導航欄&#xff08;六&#xff09; 功能概述 添加搜索框用于搜索博客。 需求詳細描述 1. 添加搜索框用于搜索博客 描…

【數據密集型系統設計】軟件系統的可靠性、可伸縮性、可維護性

文章目錄 一. 數據密集型程序的特點以及遇到的問題二. 可靠性 : 即使出現問題&#xff0c;也能繼續正確工作1 硬件故障2. 軟件錯誤3. 人為錯誤 二. 可伸縮性1. 描述負載與推特的例子2. 描述性能-延遲和響應時間3. 應對負載的方法 四. 可維護性1. 可操作性&#xff1a;人生苦短&…