leetcode226 翻转二叉树

 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
原文地址:https://www.cnblogs.com/yaodao12/p/13956357.html