題目
翻轉一棵二叉樹。
示例:輸入:
輸出:
思路:這道題主要是為了翻轉所有的左右子節點,那麼我們只要遍歷出所有的節點,翻轉左右子樹即可。(這裡的遍歷方法有前序遍歷,中序遍歷,後序遍歷(這三種為遞迴實現),層序遍歷(這種為迭代實現))
解法一:前序遍歷(後序遍歷的解法上與之類似,不過中序遍歷有所注意)
class
solution
}
解法二:中序遍歷
中序遍歷使用時,我們先遍歷出了左子樹,那麼左右子樹交換時,我們要注意最後的遞迴表示式還是遞迴左子樹, 因為現在的左子樹即為右子樹
class
solution
}
解法三:層序遍歷(迭代實現)
層序遍歷一般使用佇列儲存,因為每個節點都遵循先進先出原則(即彈出根節點時,順便把左右節點入隊)
class
solution
if(node.right != null)
}return root;
}}
226 翻轉二叉樹 leetcode
226.翻轉二叉樹 leetcode 226.翻轉二叉樹 definition for a binary tree node.class treenode class solution tmp root left root left root right root right tmp this in...
leetcode 226 翻轉二叉樹
翻轉一棵二叉樹。示例 輸入 4 2 7 1 3 6 9輸出 4 7 2 9 6 3 1備註 這個問題是受到 max howell 的 原問題 啟發的 谷歌 我們90 的工程師使用您編寫的軟體 homebrew 但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。definition for...
LeetCode 226 翻轉二叉樹
這道題目是一道很經典的關於二叉樹的演算法題,題目如下 題目的描述非常簡單,就是翻轉一棵給定的二叉樹,然而有趣的是這個備註,這個故事是 mac 系統的包管理工具 homebrew 的開發者 max howell 去谷歌面試的時候沒有做出這道面試題而遭淘汰了,所以這道題目也是引發血案的一道二叉樹題目。其...