解(C++):
1.二叉樹判空 if(root == 0) 或 if(root == nullptr);
2.二叉樹的左子樹: root->left .
3.使用遞歸,將當前根節點的左右指針指向互換左向右子樹(此時右子樹也進行了翻轉)
// 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 == 0)return root;TreeNode* temp = root->left;root->left = invertTree(root->right);root->right = invertTree(temp);return root;}
};
解(JavaScript): 每次對根做處理,若根非空,判斷左右子樹是否全為空,若有一個不為空,交換左右子樹的指向,并翻轉左右子樹
/*** Definition for a binary tree node.* function TreeNode(val) {* this.val = val;* this.left = this.right = null;* }*/
/*** @param {TreeNode} root* @return {TreeNode}*/
var invertTree = function(root) {if(root){if(root.left || root.right) {var l = root.left;var r = root.right;root.right = l;root.left = r;invertTree(l);invertTree(r);}return root;
};