为了账号安全,请及时绑定邮箱和手机立即绑定

明星程序员被Google挂掉的故事

标签:
Java MySQL

首先要提一个软件Homebrew

Homebrew可能是Mac上最好用的包管理器, 地位相当于Ubuntu的apt, 也相当于命令行版的AppStore

700

Homebrew


700

brew

Max Howell是Homebrew的作者, 某天去google面试, 面试官出了一道反转二叉树的题目, 然而Max Howell没答上来, 最后, 就成为了一段佳话.

700

反转二叉树


  • Google面试官:Max Howell来我大Google,这是好事情,一定要留下他! 不能出太难的题,也不能太直白; 所以题目既要简单又要逼格,树结构应该是比较合适了,树里最常见的就是二叉树,考的最多的也是二叉搜索树了, 那就反转二叉树了吧, 哈哈, 我真的太tm机智了!

  • Max Howell: 老兄,你这让我很尴尬呀,今天的事儿就算了,求不说...

哈哈,挖坑不填不是我的风格,python版解题源码奉上!

class Node(object):
    def __init__(self, value = None):
        self.value = value
        self.left = None
        self.right = Noneclass Tree(object):
    def __init__(self):
        self.root = Node()
        self.queue = []        pass

    def add(self, value):
        # 创建一个节点
        tmp_node = Node(value)        # 如果根节点为空, 则添加根节点
        if len(self.queue) == 0:
            self.root = tmp_node
            self.queue.append(tmp_node)        # 如果根节点不为空
        else:            # 获取当前子树未满的节点(当前临时父节点)
            nowRoot = self.queue[0]            # 如果临时父节点左子树为空
            if nowRoot.left == None:
                nowRoot.left = tmp_node
                self.queue.append(tmp_node)            # 如果临时父节点右子树为空
            else:
                nowRoot.right = tmp_node
                self.queue.append(tmp_node)                # 从队列清除父节点(这个父节点现在已经满了)
                self.queue.pop(0)    # 中序遍历
    def recursion_lvr(self, root):
        # 如果节点为空, 则返回
        if not root:            return
        self.recursion_lvr(root.left)
        print(root.value)
        self.recursion_lvr(root.right)    # 反转二叉树(HomeBrew的作者被坑的题目)
    def reverse_tree(self, root):
        if not root:            return
        # 获取当前左右子树的根节点
        tmp_left_node = root.left
        tmp_right_node = root.right        # 反转二叉树的左右子树
        root.left = tmp_right_node
        root.right = tmp_left_node        # 将左右子树加入新的序列
        self.reverse_tree(root.left)
        self.reverse_tree(root.right)def main():
    tree = Tree()    for i in range(1,8):
        tree.add(i)

    tree.recursion_lvr(tree.root);

    tree.reverse_tree(tree.root)


    print("反转之后的结果:")
    tree.recursion_lvr(tree.root);if __name__ == '__main__':
    main()

综上所述, 算法的确很重要......




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
3867
获赞与收藏
281

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消