今天碰到了世界名题:反转二叉树。
名题的由来,是一个著名程序员去谷歌面试因为不会反转二叉树被拒,
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
这道题的意思很简单:
Invert a binary tree.
4
/
2 7
/ \ /
1 3 6 9
to
4
/
7 2
/ \ /
9 6 3 1
我以为很难,原来还是递归
网友说,递归不难,是一种思想。我认同,原来认为递归难,是因为还不具备用递归解决问题的习惯和思维方式。一旦把问题交给递归解决,发现竟然很省心。对,就是省心二字。
递归说:反转二叉树,就是把每个节点左右换一下
看到能用到每个这个词的时候,似乎就能看到递归的曙光了。
今天没有用电脑,纯手机浏览器刷题,而且看不到runcode结果的对比,只能直接提交测试,第三次提交AC,很开心!
贴图一张,纪念第一次纯手机刷过:
最后贴俺手机敲的递归代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(!root) return root;
TreeNode* tmp = invertTree(root -> left);
root -> left = invertTree(root -> right);
root -> right = tmp;
return root;
}
};
以后我打算在这里,随着刷题,每天也记录下代码以外的我真实的生活中经历的人生感悟或故事。
相当于文艺作品中插播代码~
今言有二:
一天过后,傍晚搭乘十几块钱的优步,拼着车,逛着北京去望京,旁边坐着长相还不错的专职司机,我带着耳机,听着音乐,微信里聊着天。吹着小风,吃着好炖,手机刷题,或许这就是一天中最惬意的时刻。
我发现这段时间是神在磨练我不足的性格的时期。借着我和姊妹们日常的交往和碰撞,让我越发的发现自己性格的不足。我行我素惯了,不懂得尊重他人和体谅他人。很多时候出于无心,却表现为有意。每天多为旁人考虑一点,你好我也好。