目录:
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 - 二叉树翻转系列问题相关推荐

  1. java实现翻转二叉树_【leetcode刷题】[简单]226. 翻转二叉树(invert binary tree)-java...

    翻转二叉树 invert binary tree 题目 翻转一棵二叉树. 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 ...

  2. leetcode(226)—— Invert Binary Tree(Python/C++)

    Invert Binary Tree 二叉树节点定义: struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) ...

  3. 【二叉树的迭代版后序遍历】LeetCode 145. Binary Tree Postorder Traversal

    LeetCode 145. Binary Tree Postorder Traversal Solution1:递归版答案 二叉树的后序遍历递归版是很简单的,关键是迭代版的代码既难理解又难写!但听了花 ...

  4. LeetCode 545. Boundary of Binary Tree 二叉树边界

    LeetCode 545. Boundary of Binary Tree 二叉树边界 Given a binary tree, return the values of its boundary i ...

  5. 【二叉树迭代版中序遍历】LeetCode 94. Binary Tree Inorder Traversal

    LeetCode 94. Binary Tree Inorder Traversal Solution1:递归版 二叉树的中序遍历递归版是很简单的,中序遍历的迭代版需要特殊记一下! 迭代版链接:htt ...

  6. 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal

    LeetCode 144. Binary Tree Preorder Traversal Solution1:递归版 二叉树的前序遍历递归版是很简单的,前序遍历的迭代版相对是最容易理解的. 迭代版链接 ...

  7. LeetCode: Flatten Binary Tree to Linked List

    LeetCode: Flatten Binary Tree to Linked List LeetCode: Flatten Binary Tree to Linked List Given a bi ...

  8. 226. Invert Binary Tree 1

    题目链接:Invert Binary Tree 思路: 如果需要反转一个二叉树,那么我们需要遍历整个树的所有节点. 如果想遍历所有的节点,我们可以用Depth First Search(DFS)或者B ...

  9. LeetCode 103. Binary Tree Zigzag Level Order Traversal

    LeetCode 103. Binary Tree Zigzag Level Order Traversal Solution1:基于层次遍历的微改 /*** Definition for a bin ...

最新文章

  1. svn通讯协议_【SVN】——svn协议和http协议
  2. html5 上传超大文件,HTML5教程 如何拖拽上传大文件
  3. Beta冲刺提交-星期四
  4. python入门系列——第2篇
  5. 【最优解】Leecode 594. 最长和谐子序列——Leecode每日一题系列
  6. P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】
  7. C#常用的文件操作 (转)
  8. 扫地机器人什么牌子好?2021最新扫地机器人排行榜
  9. button的OnClick与OnClientClick事件
  10. Z=X+Y型概率密度的求解
  11. librtmp usage
  12. 什么是单点登陆系统(SSO)?
  13. 求职简历-机器学习工程师
  14. 用excel做logistic回归分析_用Excel做回归分析的详细步骤
  15. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...
  16. 一种内嵌P2P的wifi转红外发射神器
  17. Python每日一记42机器学习中特征重要性feature_importances_
  18. 做网站申请域名有什么方法?
  19. 汉字转UTF8 16进制字符串
  20. CSS实现文字跑马灯效果

热门文章

  1. 如何修改oracle字段类型
  2. linux系统基本操作命令
  3. 牛客网——今年的第几天
  4. AWK如何打印从某一列到最后一列的内容
  5. CollectionView
  6. [蓝桥杯] 连号区间数
  7. OGRE 学习小记 开发环境的配置
  8. android edittext设置内容为空,android – 我将EditText的InputType设置为TYPE_NULL后无法更改...
  9. 浏览器工作原理与实践学习笔记
  10. 9.找出1000以内的完数,所谓完数是指该数的各因子之和等于该数,如:6 = 1+2+3。