1 /* 2 * @lc app=leetcode.cn id=226 lang=cpp 3 * 4 * [226] 翻转二叉树 5 */ 6 7 // @lc code=start 8 /** 9 * Definition for a binary tree node. 10 * struct TreeNode { 11 * int val; 12 * TreeNode *left; 13 * TreeNode *right; 14 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 15 * }; 16 */ 17 class Solution { 18 public: 19 /* 20 知道用递归,终止条件也知道,就是对与递归的过程不了解,还有返回值 21 22 从根节点开始,递归地对树进行遍历,并从叶子结点先开始翻转。 23 如果当前遍历到的节点 extit{root}root 的左右两棵子树都已经翻转, 24 那么我们只需要交换两棵子树的位置,即可完成以 extit{root}root 为根节点的整棵子树的翻转。 25 26 */ 27 TreeNode* invertTree(TreeNode* root) { 28 if(root==nullptr)return nullptr; 29 if(!root->left&& !root->right) return root; 30 TreeNode* tmp1=invertTree(root->left); 31 TreeNode* tmp2=invertTree(root->right); 32 root->left=tmp2; 33 root->right=tmp1; 34 35 return root; 36 } 37 }; 38 39 // @lc code=end