leetcode 0226 翻轉二叉樹

2022-07-20 07:42:14 字數 963 閱讀 3756

題目位址

1.遞迴

時間複雜度o(n) 空間複雜度o(n)

遞迴的思路首先要找到遞迴的終止條件,這題遞迴的終止條件必須要是當前的節點為null才可以結束遞迴。或者我們可以換個角度來思考,如果這個節點不為null,那它就可能還存在子節點,這種情況我們是可以繼續向下遞迴的。

第二個使我們必須了解遞迴的過程,本題的遞迴主要是為了翻轉node節點的左右子樹,inverttree函式是為了找到以root為根的節點,將整棵樹翻轉,並將翻轉之後的結果返回。有了這個理解之後,我們就可以用同樣的方式理解**中的inverttree(root.left)inverttree(root.right)

var inverttree = function(root) 

const left = inverttree(root.left)

const right = inverttree(root.right)

root.left = right

root.right = left

return root

};

2.廣度優先遍歷(bfs)

時間複雜度o(n) 空間複雜度o(n)

這題由於需要將二叉樹中的每個節點的左右子樹交換,那我們需要訪問二叉樹的每個節點才行,顯然這種每個節點都需要訪問,但是無關順序的問題,bfs和dfs兩種方案都可以。

class solution 

return root;

}}

3.深度優先遍歷(dfs)
var inverttree = function(root) 

const stack =

stack.push(root)

while (stack.length)

return root

};

LeetCode 整數翻轉

中文版無需翻牆哦!給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據...

LeetCode 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 4 2 7 1 3 6 9 輸出 4 7 2 9 6 3 1 備註 這個問題是受到 max howell 的 原問題 啟發的 谷歌 我們90 的工程師使用您編寫的軟體 homebrew 但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。思路分析 如果需要翻轉一...

LeetCode 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 4 2 7 1 3 6 9 輸出 4 7 2 9 6 3 1 由題目描述可知,需要對輸入的二叉樹的每個節點執行左右子樹對調操作。因此,由二叉樹的先序遍歷遞迴演算法修改一下,即可實現遞迴的對二叉樹每個節點執行對調操作。definition for a binary tree...