翻轉一棵二叉樹。
示例:輸入:
4/ \
2 7
/ \ / \
1 3 6 9
輸出:4
/ \
7 2
/ \ / \
9 6 3 1
備註:這個問題是受到 max howell 的 原問題 啟發的 :
谷歌:我們90%的工程師使用您編寫的軟體(homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。
class solution
// attention, 如果遞迴過程中直接對左右子樹賦值,則破壞了原有的樹結構
// root->left = inverttree(root->right);
// root->right = inverttree(root->left);
inverttree_recur(root->left);
inverttree_recur(root->right);
std::swap(root->left, root->right);
return root;
}// 非遞迴求解,層序遍歷 + 棧處理
treenode *inverttree(treenode *root)
// 層序遍歷中,將至少有左子樹,或者至少有右子樹的的節點推入棧中,待交換
std::queueq;
q.emplace(root);
std::stacks;
while (!q.empty())
if (node->left)
if (node->right)
}// 遍歷棧,交換非葉子節點
while (!s.empty())
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 思路 有關樹的問題要想到遞迴,遞迴的想法很簡單,將根的左右子樹互換之後,再已左右子樹為根繼續互換。遞迴最重要的就是終止條件,如果傳入的是空指標,或者葉節點,那麼不需要再遞迴了,直接返回根節點。需要注意的是,在子...