leetcode--226. 翻轉二叉樹
阿新 • • 發佈:2018-11-09
翻轉一棵二叉樹。
示例:
輸入:
4 / \ 2 7 / \ / \ 1 3 6 9
輸出:
4 / \ 7 2 / \ / \ 9 6 3 1
備註:
這個問題是受到 Max Howell 的 原問題 啟發的 :
谷歌:我們90%的工程師使用您編寫的軟體(Homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。
思路: 自下向上的,交換左右子樹,即可。
在交換子樹的時候, 只需把左右子樹的指標交換就可以了。 (我大悟了)。。。。
AC:
class Solution {
public:
TreeNode* fun(TreeNode* root)
{
if (root==NULL)
return NULL ;
root->left=fun(root->left);
root->right=fun(root->right);
TreeNode* tem=root->left;
root->left=root->right;
root->right=tem;
return root;
}
TreeNode* invertTree(TreeNode* root) {
if (root==NULL)
return NULL;
return fun(root);
}
};
昨天寫了好久,就是寫不出來,原來是這樣的額。。。