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/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。