[LeetCode] Invert Binary Tree - 二叉树翻转系列问题
目录:
1.Invert Binary Tree - 二叉树翻转 [递归]
题目概述:
Invert a binary tree.
4/ \2 7/ \ / \ 1 3 6 9
to
4/ \7 2/ \ / \ 9 6 3 1
Trivia: This problem was inspired by this original tweet by Max Howell:
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
题目分析:
题目背景是MaxHowell(他是苹果电脑最受欢迎的homebrew程序作者)去Google面试,面试官说:“虽然在Google有90%的工程师用你写的Homebrew,但是你居然不能再白板上写出翻转二叉树的代码,所以滚带吧”!
该题最初想法就是通过递归依次交换左右结点,但是想得太多,如“是否需要再建一颗树”、“是否需要引入队列或BFS”,最终没有AC。
我的代码:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*///思路:二叉树递归 左右结点交换 在递归翻转左右子树
class Solution {
public:TreeNode* invertTree(TreeNode* root) {TreeNode *left, *right;if(root==NULL)return root;left = root->left;right = root->right;root->left = invertTree(right);root->right = invertTree(left);return root;}
};
其他代码:
推荐阅读和采用二叉树非递归层次遍历算法实现如下。
你会翻转二叉树吗?--谈程序员的招聘
http://blog.csdn.net/sunao2002002/article/details/46482559
//第二种方法 通过队列层次遍历队列实现
class Solution {
public:TreeNode* invertTree(TreeNode* root) {queue<TreeNode*> q;if(root==NULL)return root;q.push(root);int size=q.size();while(size>0){TreeNode *p=q.front();q.pop();//交换左右结点TreeNode *LNode=p->left;TreeNode *RNode=p->right;p->left=RNode;p->right=LNode;//进入队列if(p->left) {q.push(p->left);}if(p->right) {q.push(p->right);}size=q.size();}return root;}
};
其他题目:
(By:Eastmount 2015-9-12 凌晨5点半 http://blog.csdn.net/eastmount/)
[LeetCode] Invert Binary Tree - 二叉树翻转系列问题相关推荐
- java实现翻转二叉树_【leetcode刷题】[简单]226. 翻转二叉树(invert binary tree)-java...
翻转二叉树 invert binary tree 题目 翻转一棵二叉树. 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 ...
- leetcode(226)—— Invert Binary Tree(Python/C++)
Invert Binary Tree 二叉树节点定义: struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) ...
- 【二叉树的迭代版后序遍历】LeetCode 145. Binary Tree Postorder Traversal
LeetCode 145. Binary Tree Postorder Traversal Solution1:递归版答案 二叉树的后序遍历递归版是很简单的,关键是迭代版的代码既难理解又难写!但听了花 ...
- LeetCode 545. Boundary of Binary Tree 二叉树边界
LeetCode 545. Boundary of Binary Tree 二叉树边界 Given a binary tree, return the values of its boundary i ...
- 【二叉树迭代版中序遍历】LeetCode 94. Binary Tree Inorder Traversal
LeetCode 94. Binary Tree Inorder Traversal Solution1:递归版 二叉树的中序遍历递归版是很简单的,中序遍历的迭代版需要特殊记一下! 迭代版链接:htt ...
- 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal
LeetCode 144. Binary Tree Preorder Traversal Solution1:递归版 二叉树的前序遍历递归版是很简单的,前序遍历的迭代版相对是最容易理解的. 迭代版链接 ...
- LeetCode: Flatten Binary Tree to Linked List
LeetCode: Flatten Binary Tree to Linked List LeetCode: Flatten Binary Tree to Linked List Given a bi ...
- 226. Invert Binary Tree 1
题目链接:Invert Binary Tree 思路: 如果需要反转一个二叉树,那么我们需要遍历整个树的所有节点. 如果想遍历所有的节点,我们可以用Depth First Search(DFS)或者B ...
- LeetCode 103. Binary Tree Zigzag Level Order Traversal
LeetCode 103. Binary Tree Zigzag Level Order Traversal Solution1:基于层次遍历的微改 /*** Definition for a bin ...
最新文章
- svn通讯协议_【SVN】——svn协议和http协议
- html5 上传超大文件,HTML5教程 如何拖拽上传大文件
- Beta冲刺提交-星期四
- python入门系列——第2篇
- 【最优解】Leecode 594. 最长和谐子序列——Leecode每日一题系列
- P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】
- C#常用的文件操作 (转)
- 扫地机器人什么牌子好?2021最新扫地机器人排行榜
- button的OnClick与OnClientClick事件
- Z=X+Y型概率密度的求解
- librtmp usage
- 什么是单点登陆系统(SSO)?
- 求职简历-机器学习工程师
- 用excel做logistic回归分析_用Excel做回归分析的详细步骤
- php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...
- 一种内嵌P2P的wifi转红外发射神器
- Python每日一记42机器学习中特征重要性feature_importances_
- 做网站申请域名有什么方法?
- 汉字转UTF8 16进制字符串
- CSS实现文字跑马灯效果
热门文章
- 如何修改oracle字段类型
- linux系统基本操作命令
- 牛客网——今年的第几天
- AWK如何打印从某一列到最后一列的内容
- CollectionView
- [蓝桥杯] 连号区间数
- OGRE 学习小记 开发环境的配置
- android edittext设置内容为空,android – 我将EditText的InputType设置为TYPE_NULL后无法更改...
- 浏览器工作原理与实践学习笔记
- 9.找出1000以内的完数,所谓完数是指该数的各因子之和等于该数,如:6 = 1+2+3。