博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
226. Invert Binary Tree
阅读量:5232 次
发布时间:2019-06-14

本文共 1171 字,大约阅读时间需要 3 分钟。

题目如下: 

Invert a binary tree.Example:Input:     4   /   \  2     7 / \   / \1   3 6   9Output:     4   /   \  7     2 / \   / \9   6 3   1

分析:

  ?问题,翻转二叉树。怎么翻转看图就知道了。

  观察一下不难发现:翻转二叉树的定义就是根-左-右变成了根-“左”(右)-“右”(左)

  那么:实现翻转的方法,往下遍历递归即可。

  方法如下:

  1.若当前节点为空,返回空。递归出口。

  2.定义一个右节点:由翻转当前节点的右子树所得。

  3.定义一个左节点:由翻转当前节点的左子树所得。

  4.当前节点->“左”节点=“右”节点

  5.当前节点->“右”节点=“左”节点

  

  方法本质上就两条:

    I.反转二叉树的左右子树

    II.将左右子树交换

  其中I又是一个反转二叉树的问题,所以递归解决。

 

代码如下:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     struct TreeNode *left; *     struct TreeNode *right; * }; */struct TreeNode* invertTree(struct TreeNode* root) {        if(root==NULL)        return NULL;    struct TreeNode *R = invertTree(root->right);//重构的右节点    struct TreeNode *L = invertTree(root->left); //重构的左节点    root->right=L;//“右”节点    root->left=R;//“左”节点    return root; }

 

注:关于这题还有个小故事,我觉得光Homebrew就可以秒掉整本数据结构……

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 f*** off.

我有点理解为什么我看不懂开源代码了。

 

转载于:https://www.cnblogs.com/keelongz/p/10046480.html

你可能感兴趣的文章
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
设计模式——设计模式概述
查看>>
封装一个获取module.exports内容的方法
查看>>