LeetCode 226 翻轉二叉樹

2021-10-19 15:16:40 字數 885 閱讀 9101

題目描述:

翻轉一棵二叉樹。

示例:

輸入:

4

/ \

2 7

/ \ / \

1 3 6 9

輸出:

4

/ \

7 2

/ \ / \

9 6 3 1

思路分析:

通過觀察,我們發現只要把二叉樹上的每乙個節點的左右子節點進行交換,最後的結果就是完全翻轉之後的二叉樹

這道題目比較簡單,關鍵思路在於我們發現翻轉整棵樹就是交換每個節點的左右子節點,於是我們把交換左右子節點的**放在了前序遍歷的位置。

值得一提的是,如果把交換左右子節點的**放在後序遍歷的位置也是可以的,但是放在中序遍歷的位置是不行的。

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/class solution

treenode tmp=root.left;

root.left=root.right;

root.right=tmp;

inverttree(root.left);

inverttree(root.right);

return root;

}}

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 去谷歌面試的時候沒有做出這道面試題而遭淘汰了,所以這道題目也是引發血案的一道二叉樹題目。其...

leetcode226 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 4 2 7 1 3 6 9 輸出 4 7 2 9 6 3 1 思路 有關樹的問題要想到遞迴,遞迴的想法很簡單,將根的左右子樹互換之後,再已左右子樹為根繼續互換。遞迴最重要的就是終止條件,如果傳入的是空指標,或者葉節點,那麼不需要再遞迴了,直接返回根節點。需要注意的是,在子...