老大退休了

本文记录了一位在IT行业工作超过20年的资深人士suihing的退休聚会。她在会上分享了自己对金融危机的看法、成功的见解及在汇丰银行工作的经历。她认为工作之余,也要学会享受生活。

 早就听说我们部门(Enterprise data)的波士退休了。原本以为再也碰不着面了。没想周五,她老人家还是从香港来到了广州,说想见见我们。其实我们是准备了一些礼物给她(主要是合影)。

suihing 看起来依然很年轻,似乎还没到退休的年龄。

周五上午11时,vivian 叫了一帮人从38楼来到4楼会议室参加suihing fareware party. party 其实很简单。

开始是suihing 讲话。大概是两点,一是要感谢大家的努力,二是退休计划。

她的退休计划还是蛮interesting的:改善自己的身体健康,提高自己的高尔夫水平,多陪陪家人,改善自己的财富。

真是羡慕她,退休后可以有如此多自主安排的时间,有时间去做自己的爱好。她说有时间还是多关心下楼市股市,工作毕竟不是人生的全部,应该会玩会放松。

接着就是我们的提问。

第一个问题是关于她对金融危机和当前经济的看法。她说她个人觉得,从风险的角度出发,相比于去年和年初,市场的下跌空间应该是比较有限。还有投资要量力而为。

 

第二个问题是她作为一个对我们来说是相对成功的人士,对于成功有什么心得或者忠告。(个人觉得每跟人对成功的定义是有区别的,不过suihing的advice还是很中肯的)努力是肯定要的,十分聪明倒不一定要,但要有较强的分析理解能力。知识面要广阔,会鼓励下属,会说话(她很强调这点,就是表法方式很关键,要让人听着舒服),还有就是会玩,会寻求帮助。(似乎跟看到的书里讲的差不多)。

 

第三个问题是听说你在离开汇丰之后又重新回来为汇丰效力,大概为汇丰效力了20多年,为什么会去而复返?在这20年有什么遗憾和满意的地方。去而复返适应为她的老伴赏识她,能给她机会去展示她的才华,而且汇丰给的人工也不错,所以去而复返。遗憾是没有能让亚太区在整个决策层有一个代表人物,满意就是使enterprise data 从无到有。

 

还有些问题我没太记在心上。

她是我工作以来遇到第一位退休的员工,不知道能有几位可以如她般为一家公司奋斗二三十年。似乎IT业人员流动是最频繁的。

 

 

### 关于树的数据结构与算法 #### 树的基本概念 树是一种非线性的数据结构,由节点和连接这些节点的边组成。它具有层次化的特性,适合用于表示具有层级关系的数据[^3]。 #### 定义管理结构体 为了在程序中实现一棵二叉树,通常会定义如下所示的结构体: ```c typedef struct b_tree { int data; struct b_tree *lchild; // 左子节点 struct b_tree *rchild; // 右子节点 } node, *p_node; ``` 此结构体包含了三个部分:`data` 存储节点中的实际数据,`lchild` 和 `rchild` 则分别指向其左孩子和右孩子节点[^2]。 #### 树的重要术语 - **结点**:树中的基本单元,包含数据以及指向其他结点的链接。 - **度**:对于单个结点而言,它的度是指其所拥有的子树数目;而对于整棵树来说,则是所有结点中最大的度数。 - **叶子**:没有孩子的结点被称为叶结点,也就是度为0 的结点。 - **分支结点**:至少拥有一个子结点的结点称为内部结点或分支结点。 - **兄弟结点**:共享同一个父结点的结点互为兄弟。 - **层数**:从根开始定义起始层为1 ,每增加一层则加1 。 - **深度/高度**:树的高度是从根到最远叶子最长路径上的结点数量减去1 。如果只考虑边的数量也可以简单理解成最大层数减一[^3]。 #### 常见树的操作及其对应的算法 - **遍历** 遍历是对整个树进行访问的一种方式,常见的三种主要形式包括前序遍历、中序遍历和后序遍历。它们的区别在于何时处理当前结点相对于递归调用左右子树的位置不同[^1]。 - **查找** 查找操作旨在定位特定值所在的结点位置。如果是二叉搜索树(BST),那么可以根据比较大小快速缩小范围找到目标项。 - **插入** 插入新元素进入已存在的树当中需遵循一定规则保持原有性质不变。比如,在BST 中总是将小于父亲的关键字放左边,大于等于的父亲右边。 - **删除** 删除某个指定关键字所代表的结点可能会涉及到结构调整以维持整体平衡性和有效性。这一步骤相对较为复杂因为要考虑多种情况如被删者是否有后代等问题[^1]。 #### 动态规划应用于树型问题的例子 当面对一些涉及子树间相互依赖关系的问题时,可以运用动态规划的思想自底向上构建解决方案。例如计算给定满二叉树的最大独立集规模就是一个典型例子。这里我们设f[u][0]/f[u][1] 表示不选取u 结点情况下以其为根的最大独立集成员总数 / 选取u 结点情形下相应数值。转移方程可写做 f[u][0]=sum(max(f[v][0],f[v][1])) 对应每个儿子v ; 而f[u][1]=1+sum(f[v][0]) 同理得到最终答案max(f[root][0],f[root][1])[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值