897 遞迴順序查詢樹

2022-09-18 06:27:30 字數 954 閱讀 6589

給你乙個樹,請你按中序遍歷重新排列樹,使樹中最左邊的結點現在是樹的根,並且每個結點沒有左子結點,只有乙個右子結點。

示例 :

輸入:[5,3,6,2,4,null,8,1,null,null,null,7,9]

5/ \

3 6

/ \ \

2 4 8

/ / \

1 7 9

輸出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]

1 \2\

3\4\

5\6\

7\8\

9

給定樹中的結點數介於1100之間。

每個結點都有乙個從01000範圍內的唯一整數值。

這道題目思路很簡單,用中序遍歷即可,在中序遍歷的過程中把當前遍歷的節點變成上乙個節點的右節點即可,但是做這個題目的時候卡住了一會,原因是返回的時候直接返回了cur,這就會導致返回的是最後乙個節點的右節點,為null

class solution 

linkedlistlist = new linkedlist<>();

treenode newroot = new treenode(0);

treenode cur = newroot;

//怎麼返回頭節點是乙個值得注意的點

while(root != null || !list.isempty()) else

}return newroot.right;

}}

解決辦法也很簡單,用兩個節點,乙個用來返回,乙個用來遍歷。

897 遞增順序查詢樹

給定乙個樹,按中序遍歷重新排列樹,使樹中最左邊的結點現在是樹的根,並且每個結點沒有左子結點,只有乙個右子結點。示例 輸入 5,3,6,2,4,null,8,1,null,null,null,7,9 5 36 248 17 9輸出 1,null,2,null,3,null,4,null,5,null,...

897 遞增順序查詢樹

給定乙個樹,按中序遍歷重新排列樹,使樹中最左邊的結點現在是樹的根,並且每個結點沒有左子結點,只有乙個右子結點。示例 輸入 5,3,6,2,4,null,8,1,null,null,null,7,9 5 3 6 2 4 8 1 7 9 輸出 1,null,2,null,3,null,4,null,5,...

897 遞增順序查詢樹

很簡單的一道題目,兩種方法,第一種需要額外空間來儲存結點中的值,然後按照儲存順序生成一顆新的樹 class solution def increasingbst self,root treenode treenode 中序遍歷二叉樹,獲得節點的值,然後生成新的樹tree l self.helper ...