LeetCode 226 翻轉二叉樹

2021-09-29 23:58:44 字數 996 閱讀 9499

自己寫的遞迴的解法,還是比較高效的。 

class solution 

};

看完討論區後自己寫的迭代的解法:輔助資料結構用佇列和棧都可以

class solution 

return root;

}};class solution

return root;

}};

討論區優秀題解:

1 - 前中後序遍歷

treenode* inverttree(treenode* root) 

treenode* inverttree(treenode* root)

treenode* inverttree(treenode* root)

2 - 非遞迴方法:利用佇列或棧輔助實現

class solution 

return root;

//這裡開始是佇列方法,和用棧的方法基本一致

if(root==null) return null;

queueq;

q.push(root);

while(!q.empty())

return root;

//這裡開始是用遞迴的方法

if(root==null)return null;

treenode* right=inverttree(root->right);//建立乙個right變數儲存右子樹翻轉的結果;

treenode* left=inverttree(root->left);//建立乙個left變數儲存左子樹的翻轉結果;

root->left=right;//將翻轉好的右子樹賦值給根節點的左子樹

root->right=left;//將翻轉好的左子樹賦值給根節點的右子樹

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 思路 有關樹的問題要想到遞迴,遞迴的想法很簡單,將根的左右子樹互換之後,再已左右子樹為根繼續互換。遞迴最重要的就是終止條件,如果傳入的是空指標,或者葉節點,那麼不需要再遞迴了,直接返回根節點。需要注意的是,在子...