《講個故事》明星程式設計師被Google掛掉的故事

2021-09-11 14:55:33 字數 1949 閱讀 8644

首先要提乙個軟體homebrew

max howell是homebrew的作者, 某天去google面試, 面試官出了一道反轉二叉樹的題目, 然而max howell沒答上來, 最後, 就成為了一段佳話.

哈哈,挖坑不填不是我的風格,python版解題原始碼奉上!

class

node

(object):

def__init__

(self, value = none):

self.value = value

self.left = none

self.right = none

class

tree

(object):

def__init__

(self):

self.root = node()

self.queue =

pass

defadd

(self, value):

# 建立乙個節點

tmp_node = node(value)

# 如果根節點為空, 則新增根節點

if len(self.queue) == 0:

self.root = tmp_node

# 如果根節點不為空

else:

# 獲取當前子樹未滿的節點(當前臨時父節點)

nowroot = self.queue[0]

# 如果臨時父節點左子樹為空

if nowroot.left == none:

nowroot.left = tmp_node

# 如果臨時父節點右子樹為空

else:

nowroot.right = tmp_node

# 從佇列清除父節點(這個父節點現在已經滿了)

self.queue.pop(0)

# 中序遍歷

defrecursion_lvr

(self, root):

# 如果節點為空, 則返回

ifnot root:

return

self.recursion_lvr(root.left)

print(root.value)

self.recursion_lvr(root.right)

# 反轉二叉樹(homebrew的作者被坑的題目)

defreverse_tree

(self, root):

ifnot 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)

defmain

(): 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()

複製**

綜上所述, 演算法的確很重要......

程式設計師的故事 1

乙個人一台電腦,這就是我自己的故事。當程式設計師當了這麼多年,從中學到大學,到工作,有過高傲,受過打擊,被人整過,憤憤不平,終於成熟之後的發展。想把這些分 20年寫成的東西一步步發表出來,幾本上一年一篇。這就是我 乙個活生生的程式設計師 的故事。開篇1 16歲的小鬼太吸引了。學習的壓力那麼大,而我又...

成為明星程式設計師的10個提示

andrew c.oliver是open software integrators公司的總裁與創始人,公司主要與一些開源公司合作,特別是那些初創公司,致力於為客戶提供課程開發 培訓 諮詢與支援等服務。合作夥伴可以將精力放在核心的業務領域上,公司則為其提供專業的服務。近日,andrew撰文談到了對於程...

成為明星程式設計師的10個提示

英文原文 10 steps to becoming the developer everyone wants andrew c.oliver 是 open software integrators 公司的總裁與創始人,公司主要與一些開源公司合作,特別是那些初創公司,致力於為客戶提供課程開發 培訓 諮...