首先,我得说明一下,毕业一年多,水平感觉是下等偏下那种,小公司,开发也不难,平时写的业务逻辑比较多,算法什么的基本很少涉及。。此为背景。。
终于有了个微信面试的机会,去了当场手写代码,都怪我太渣,请见谅。。写了一会,写了一部分,后面的实在磨不出来,偷偷摸摸的走了。。。请原谅我的渣。。
说了这么多,不介绍了,大家关注的重点也不在这里,直接贴题目吧。
1、有如下的二叉树结构体:
typedef struct _TreeNode_{
int key;
struct _TreeNode_ *left, *right;
}TreeNode;
要求以下面函数原型完成函数:int HasPath(TreeNode *root, int value),判断二叉树中是否存在路径(从根节点到叶子节点)的所有节点之和等于给定值value,存在返回1,否则返回0.
int HasPath(TreeNode *root, int value)
{
if (root == NULL && value == 0) {
return 1;
}
if (root == NULL && value != 0) {
return 0;
}
if (root != NULL && value == 0) {
return 0;
}
int sum = value - root->key;
int leftval = 0,rightval = 0;
if (root->left != NULL) {
leftval = HasPath(root->left, sum);
}
if (root->right != NULL) {
rightval = HasPath(root->right, sum);
}
if (root->left == NULL&& root->right == NULL) {
return value == root->key?1:0;
}
return rightval|leftval;
}
这个我当场写错了。。不知道自己写了些啥。。不知道现在写对没,求抨击求蹂躏。。。
第二题 函数原型 void func(char *str, int len) 给定一个不重复的字符串,打印全部组合
这个题,开始以为字符串中间来循环应该能折腾出来,然后开始写了之后才发现各种问题。。。
void func(char *str, int len)
{
int num = pow(2.0, len);
for (int i = 1; i < num; i++) {
for (int j = 0; j < len; j++) {
if ((i>>j)&1) {
printf("%c", str[j]);
}
}
printf("\n");
}
return;
}
第三题 实现一个字符串的表达式求值 函数原型:double calc(char *str)
持续更新。。