leetcode 897. 遞增順序搜索樹(中序遍歷)

給你一棵二叉搜索樹,請你 按中序遍歷 將其重新排列為一棵遞增順序搜索樹,使樹中最左邊的節點成為樹的根節點,并且每個節點沒有左子節點,只有一個右子節點。

示例 1:

輸入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
輸出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
示例 2:

輸入:root = [5,1,7]
輸出:[1,null,5,null,7]
提示:

樹中節點數的取值范圍是 [1, 100]
0 <= Node.val <= 1000

解題思路

二叉搜索樹中序遍歷的次序就是由小到大的,因此我們在中序遍歷的過程中,可以新建一個頭節點,然后按中序遍歷的順序,將題目中給出的二叉樹節點,一個一個地連在新樹上面。在中序遍歷的時候,修改節點指向就可以實現。具體地,當我們遍歷到一個節點時,把它的左孩子設為空,并將其本身作為上一個遍歷到的節點的右孩子。這里需要有一些想象能力。遞歸遍歷的過程中,由于遞歸函數的調用棧保存了節點的引用。

下面的代碼中,使用了 dummy 節點,它一般在鏈表題中出現。在鏈表題目中,我們為了防止鏈表的頭結點發生變化之后,不好維護頭結點,我們設置 dummy 從而保證頭結點不變。這個題目中設置了 dummy ,從而保證了在新的樹中,dummy 是根節點,不需要在遞歸的時候選擇根節點,最終返回的時候,要返回的是 dummy.right。

代碼

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/var t = new(TreeNode)
func increasingBST(root *TreeNode) *TreeNode {res:=tfindIncreasingBST(root)return res.Right
}
func findIncreasingBST(root *TreeNode)  {if root.Left!=nil{findIncreasingBST(root.Left)}root.Left=nilt.Right=roott=t.Rightif root.Right!=nil{findIncreasingBST(root.Right)}}

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

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

相關文章

【一針見血】 JavaScript this

JavaScript this 指向一站式解決轉載于:https://www.cnblogs.com/xueyejinghong/p/8403987.html

基于ssm框架和freemarker的商品銷售系統

項目說明 1、項目文件結構 2、項目主要接口及其實現 &#xff08;1&#xff09;Index&#xff1a; 首頁頁面&#xff1a;展示商品功能&#xff0c;可登錄或查看商品詳細信息 &#xff08;2&#xff09;登錄&#xff1a;/ApiLogin 3、dao層 數據持久化層&#xff0c;把商品和用戶…

c++飛揚的小鳥游戲_通過建立一個飛揚的鳥游戲來學習從頭開始

c飛揚的小鳥游戲Learn how to use Scratch 3.0 by building a flappy bird game in this course developed by Warfame. Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations. Scratch is…

345

345 轉載于:https://www.cnblogs.com/Forever77/p/11512701.html

簡·雅各布斯指數第二部分:測試

In Part I, I took you through the data gathering and compilation required to rank Census tracts by the four features identified by Jane Jacobs as the foundation of a great neighborhood:在第一部分中 &#xff0c;我帶您完成了根據簡雅各布斯(Jacobs Jacobs)所確定…

Docker 入門(3)Docke的安裝和基本配置

1. Docker Linux下的安裝 1.1 Docker Engine 的版本 社區版 ( CE, Community Edition ) 社區版 ( Docker Engine CE ) 主要提供了 Docker 中的容器管理等基礎功能&#xff0c;主要針對開發者和小型團隊進行開發和試驗企業版 ( EE, Enterprise Edition ) 企業版 ( Docker Engi…

python:單元測試框架pytest的一個簡單例子

之前一般做自動化測試用的是unitest框架&#xff0c;發現pytest同樣不錯&#xff0c;寫一個例子感受一下 test_sample.py import cx_Oracle import config from send_message import send_message from insert_cainiao_oracle import insert_cainiao_oracledef test_cainiao_mo…

mkdir命令使用范例

mkdir -p dir1/dir2/dir3/dir4 :-p 創建不存在的中間目錄mkdir -m 000 demdir &#xff1a;-m 000 為新創建的目錄指定權限轉載于:https://blog.51cto.com/2685141/2068162

pwa 問題_您真的需要PWA嗎? 這里有四個問題可以幫助您做出決定。

pwa 問題為什么需要PWA并不成問題。 讓我們看看為什么您可能不需要它 (Why you need a PWA is not in question. Let’s see why you may NOT need it) My inbox has been filled with questions regarding PWAs after my last two articles. 在上兩篇文章之后&#xff0c;我的…

利用ssh反向代理以及autossh實現從外網連接內網服務器

http://www.cnblogs.com/kwongtai/p/6903420.html轉載于:https://www.cnblogs.com/littlehb/p/7598037.html

抑郁癥損傷神經細胞嗎_使用神經網絡探索COVID-19與抑郁癥之間的聯系

抑郁癥損傷神經細胞嗎The drastic changes in our lifestyles coupled with restrictions, quarantines, and social distancing measures introduced to combat the corona virus outbreak have lead to an alarming rise in mental health issues all over the world. Social…

倦怠和枯燥_如何不斷學習(不倦怠)

倦怠和枯燥In tech, constantly learning (both in and out of work) is an unstated job requirement. 在科技界&#xff0c;不斷學習(工作中和工作中)是一項未闡明的工作要求。 When I was growing up, I would go to the bookstore with my dad every weekend, and every t…

Xcode 9.0 新增功能大全

Xcode是用于為Apple TV&#xff0c;Apple Watch&#xff0c;iPad&#xff0c;iPhone和Mac創建應用程序的完整開發人員工具集。Xcode開發環境采用tvOS SDK&#xff0c;watchOS SDK&#xff0c;iOS SDK和macOS SDK的形式捆綁Instruments分析工具&#xff0c;Simulator和OS框架。 …

Docker 入門(4)鏡像與容器

1. 鏡像與容器 1.1 鏡像 Docker鏡像類似于未運行的exe應用程序&#xff0c;或者停止運行的VM。當使用docker run命令基于鏡像啟動容器時&#xff0c;容器應用便能為外部提供服務。 鏡像實際上就是這個用來為容器進程提供隔離后執行環境的文件系統。我們也稱之為根文件系統&a…

python:pytest中的setup和teardown

原文&#xff1a;https://www.cnblogs.com/peiminer/p/9376352.html  之前我寫的unittest的setup和teardown&#xff0c;還有setupClass和teardownClass&#xff08;需要配合classmethod裝飾器一起使用&#xff09;&#xff0c;接下來就介紹pytest的類似于這類的固件。 &#…

如何開始使用任何類型的數據? - 第1部分

從數據開始 (START WITH DATA) My data science journey began with a student job in the Advanced Analytics department of one of the biggest automotive manufacturers in Germany. I was nave and still doing my masters.我的數據科學之旅從在德國最大的汽車制造商之一…

iHealth基于Docker的DevOps CI/CD實踐

本文由1月31日晚iHealth運維技術負責人郭拓在Rancher官方技術交流群內所做分享的內容整理而成&#xff0c;分享了iHealth從最初的服務器端直接部署&#xff0c;到現在實現全自動CI/CD的實踐經驗。作者簡介郭拓&#xff0c;北京愛和健康科技有限公司&#xff08;iHealth)。負責公…

從早期的初創企業到MongoDB的經理(播客)

In this weeks podcast episode, I chat with Harry Wolff, an engineering manager at MongoDB in New York City. Harry has been in the world of tech for over a decade, holding jobs in various startups before ending up at Mongo. 在本周的播客節目中&#xff0c;我與…

leetcode 1011. 在 D 天內送達包裹的能力(二分法)

傳送帶上的包裹必須在 D 天內從一個港口運送到另一個港口。 傳送帶上的第 i 個包裹的重量為 weights[i]。每一天&#xff0c;我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。 返回能在 D 天內將傳送帶上的所有包裹送達的船的最低運載…

python:pytest優秀博客

上海悠悠&#xff1a;https://www.cnblogs.com/yoyoketang/tag/pytest/ 轉載于:https://www.cnblogs.com/gcgc/p/11514345.html