C语言递归之翻转二叉树

题目描述

翻转一棵二叉树。

示例

输入:

     4
   /   
  2     7
 /    / 
1   3 6   9

输出:

     4
   /   
  7     2
 /    / 
9   6 3   1

题目要求

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     struct TreeNode *left;
 6  *     struct TreeNode *right;
 7  * };
 8  */
 9 
10 struct TreeNode* invertTree(struct TreeNode* root){
11 
12 }

题解

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     struct TreeNode *left;
 6  *     struct TreeNode *right;
 7  * };
 8  */
 9 
10 struct TreeNode* invertTree(struct TreeNode* root){
11     if(root==NULL)return root;
12     struct TreeNode *r=(struct TreeNode*)malloc(sizeof(struct TreeNode));
13     r->val=root->val;
14     if(root->left!=NULL)r->right=invertTree(root->left);
15     else r->right=NULL;
16     if(root->right!=NULL)r->left=invertTree(root->right);
17     else r->left=NULL;
18     return r;
19 }
题解

递归

递归需要明确终止条件、返回值、递归内容,二叉树问题还需注意根节点为空的特殊情况。

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/shi-champion/p/11664573.html