1. 程式人生 > >leetcode--226. 翻轉二叉樹

leetcode--226. 翻轉二叉樹

翻轉一棵二叉樹。

示例:

輸入:

     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);
    }
};
昨天寫了好久,就是寫不出來,原來是這樣的額。。。