2010年12月11日

面试中的二叉树问题

摘要: 二叉树中每个节点都有类似下面的定义struct Node{ int data; Node *left, *right;};树的主要特征是树的每一个节点都可以看成是另外一棵树的根节点。因此任何对树的操作都可以分成三部分完成 1)对根节点的操作,2)对左子树的操作,3)对右子树的操作。根据这三种操作的先后次序,产生了三种不同的遍历方法:前序遍历(123),中序遍历(213),后续遍历(231)。因为树的定义本身就是递归定义的,所以大部分和二叉树有关的问题都可以用递归算法写出来。Ex 1. 二叉树的最大深度int depth(Node *root) //二叉树的深度等于1 + max{左子树的深度, 阅读全文

posted @ 2010-12-11 16:26 Yin Yin 阅读(735) 评论(0) 推荐(0) 编辑

面试中的字符串问题 (1)

摘要: 1. 对字符串的处理不需要增加原来字符串的空间这种情况下,我们可以利用STL中copy_if的思想从字符串的第一个字符开始处理。首先定义2个指针src, dest全部指向输入字符串的第一个字符,然后用src遍历整个字符串。根据对字符串的不同处理,决定是将src指向的字符拷贝到dest,做一些处理后拷贝到dest,还是直接忽略继续处理下一个字符。 Ex 1. 将字符串中连续多个空格合并成一个空格 void combineSpace(string& s){ int src = 0, dest = 0; while(src<s.size()) { //如果遇到一个空格,拷贝这个空格,并 阅读全文

posted @ 2010-12-11 15:16 Yin Yin 阅读(374) 评论(0) 推荐(0) 编辑

导航