一985碩士吐槽:入職笛子三個月,感受最深的就是老員工的學歷問題,三本野雞大學畢業,管理一堆985,211碩,真不害臊!
學歷好只能說明考試厲害,智商高,智商高的人情商不一定高,管理不一定需要很高的智商,但需要很高的情商,並不是所有的高學歷都擅長管理。老員工就算學歷不好,畢竟在公司幹了那麽多年,你一個新來的就因為學歷高,就想把別人給替代了?
--------------下面是今天的演算法題--------------
來看下今天的演算法題,這題是LeetCode的第226:翻轉二元樹。
問題描述
來源:LeetCode第226題
難度:簡單
給你一棵二元樹的根節點 root ,翻轉這棵二元樹,並返回其根節點。
範例1:
輸入 :root = [4,2,7,1,3,6,9]
輸出 :[4,7,2,9,6,3,1]
範例2:
輸入 :root = [2,1,3]
輸出 :[2,3,1]
樹中節點數目範圍在 [0, 100] 內
-100 <= Node.val <= 100
問題分析
這題是讓反轉二元樹,我們只需要遍歷這棵二元樹的所有節點,然後交換每個節點的左右子節點即可。關於二元樹的遍歷方式非常多,所以這是一道很簡單的題。
關於這道題還有一個有趣的故事,曾經業界大佬Max Howell去Google面試,由於沒有寫出二元樹翻轉,而被Google拒絕,Max Howell釋出的推文如下,意思就是:雖然我們90%的工程師都在用你寫的Homebrew,但你連二元樹翻轉都寫不出,直接滾蛋吧!
JAVA:
public TreeNode invertTree(TreeNode root){
if (root == null)
returnnull;
// 先遞迴
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
// 最後在交換
root.left = right;
root.right = left;
return root;
}
C++:
public:
TreeNode *invertTree(TreeNode *root){
if (root == nullptr)
returnnullptr;
// 先遞迴
TreeNode *left = invertTree(root->left);
TreeNode *right = invertTree(root->right);
// 最後在交換
root->left = right;
root->right = left;
return root;
}
Python:
definvertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if root isNone:
returnNone
# 先遞迴
left = self.invertTree(root.left)
right = self.invertTree(root.right)
# 最後在交換
root.left, root.right = right, left
return root