題目——翻轉二叉樹
翻轉一棵二叉樹。
示例:
輸入:
4/ \2 7/ \ / \ 1 3 6 9
輸出:
4/ \7 2/ \ / \ 9 6 3 1
備注:
這個問題是受到 Max Howell 的 原問題 啟發的 :
谷歌:我們90%的工程師使用您編寫的軟件(Homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。
解答
c++
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if (root == NULL) {return root;}auto tmp = root->left;root->left = root->right;root->right = tmp;invertTree( root->left);invertTree( root->right);return root;}
};
分析
這個題主要運用的是遞歸的思想。對于非空節點,將他的左右分支進行翻轉,是空節點的話就返回。