LeetCode刷题(121)~翻转二叉树【从上到下/从下到上 递归 | 迭代】

举报
海轰Pro 发表于 2021/08/05 22:46:59 2021/08/05
【摘要】 题目描述 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 1234567891011121314 解答 Demo(从上到下 依次交换左右节点) TreeNode* invertTree(TreeNode* root) ...

题目描述

翻转一棵二叉树。

示例:

输入: 4 /   \
  2 7
 / \   / \
1   3 6   9
输出: 4 /   \
  7 2
 / \   / \
9   6 3   1

  
 

解答

Demo(从上到下 依次交换左右节点)

TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; // 交换左右节点 TreeNode* temp=root->left; root->left=root->right; root->right=temp; // 递归 invertTree(root->left); invertTree(root->right); return root; }

  
 

运行结果
在这里插入图片描述
Demo(从下到上 依次递归)

TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; //递归 TreeNode* left=invertTree(root->left); TreeNode* right=invertTree(root->right); //左右交换 root->right=left; root->left=right; return root; }

  
 

运行结果
在这里插入图片描述
Demo(迭代)

TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; queue<TreeNode*> q; q.push(root); while(!q.empty()) { TreeNode* current=q.front(); q.pop(); // 交换左右节点 TreeNode* temp=current->right; current->right=current->left; current->left=temp; // 将左右节点再入队列 if(current->right) q.push(current->right); if(current->left)  q.push(current->left); } return root; }

  
 

运行结果
在这里插入图片描述

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/108378278

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。