C语言递归之翻转二叉树

题目描述node

翻转一棵二叉树。网络

 

示例ide

输入:spa

     4
   /   \
  2     7
 / \   / \
1   3 6   9

输出:code

     4
   /   \
  7     2
 / \   / \
9   6 3   1

 

题目要求blog

 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

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

 

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

相关文章
相关标签/搜索