2个小时,三个Coding题目:
1、
实现Node* Connect(Node* root)函数,将二叉树结点的
sibling指针链接到同层右边的结点,如下图红色部分:
struct Node{
Node* left;
Node* right;
Node* sibling;
int data;
};
1
--NULL
/ \
2
---3
--NULL
/ \ /
4
--5
--6
--NULL
2、打印一个N*N的
蛇形矩阵,如N=4时:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
分别给出空间复杂度为O(N*N)和0(1)的coding实现
3、
合并N个有序链表
其他城市笔试题
1、奇偶排序
在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在偶数的左边
2、叉数降维
设计一个算法,把一个排序二叉树,转化成一个排序的双向链表,要求不能创建任何新的节点,只调整指针指向
3 、四则运算
现有一四则运算表达式,仅包含+-*/()和0~9数字,请设计一个算法,计算该表达式的值,其中+-只能作为运算符出现,不作为正负号出现在表达式中
请完成calc的代码实现
已有字符串和数字的转换方法(Str2num,num2Str)可直接调用,无须实现
C++:
float str2num(char[] str){....}
char[] num2str(float num){}
float calc(char[] exp){
''''''''
}
例如输入“1+2*(3-4)”
输出-1
设计测试用例测试Calc函数