前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈计算机基础知识

浅谈计算机基础知识

作者头像
希里安
发布2023-10-30 18:09:15
1310
发布2023-10-30 18:09:15
举报
文章被收录于专栏:希里安希里安

今天在复习计算机基础知识的过程中,看到很多年前的新闻。是关于Max Howell,他就是 Homebrew 的创作者。首先说说这款大名鼎鼎的Mac软件,它是一款适用于macos操作系统的开源软件包,允许用户使用命令行安装卸载各种开源软件包。而他本人是一名行业内知名的 MacOS / iOS 开发工程师,后来入职苹果公司。但是就是这么牛的人因为一个反转二叉树的问题而被谷歌拒绝。他本人发了这么一段话:

大致意思就是谷歌说:我们百分之九十的工程师都在用你写的Homebrew,但是你连二叉树的翻转都写不出来,所以滚蛋吧。

看到这,心里一惊,说实话虽然在大学学过二叉树,但是如果毫无准备去面试,让手写一段二叉树,那还真写不出来。这也说明基础知识肯定会是反映一个人能力的重要部分,尽管很多基础知识,貌似看起来实际中并不一定用得上。而且现在大厂面试也躲不了算法部分,有部分还是直接手写代码。尽管这个事看起来好像笑话,他本人也说过,尽管他不懂很多计算机科学,但是他可以创作出值得让人喜欢的作品。但是我相信这只是个例,毕竟他是一个很有计算机天赋的人,而我们是普通人,如果基础知识不过关,相信首先想进入一家大的公司都会比较困难。

借这个事,顺便复习下,什么是二叉树,以及二叉树如何翻转。

二叉树就是一种树形结构,由节点和连接这些节点的边组成。每个节点最多只有两个子节点,分别称为左子节点和右子节点,因此称之为“二叉”树。

二叉树翻转:顾名思义,就是二叉树所有的节点的左右子节点交换位置,这样,原来左子树变成右子树,右子树变成左子树。

下面是python实现二叉树翻转的代码:

代码语言:javascript
复制
# 定义二叉树的节点类
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


# 定义二叉树翻转函数
def invertTree(root: TreeNode) -> TreeNode:
    if not root:
        return None
    left = invertTree(root.left)
    right = invertTree(root.right)
    root.left, root.right = right, left
    return root

先定义一个二叉树的节点类,包含值、左右子节点三个属性,在定义一个invertTree函数来翻转二叉树,使用递归方式翻转。

最后,我觉得,如果立志想成为一个技术牛人,该学学,基础知识需要深挖并巩固。当然如果只是打螺丝的,那就打好自己的螺丝,有空该复习还是多多复习,总有用上的一天!

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希里安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档