每日一题
常见面试题练习,IT相关知识总结学习
double_happiness
这个作者很懒,什么都没留下…
展开
-
【每日一题-16】重建二叉树&C模拟实现C++继承多态
由前序遍历和中序遍历重建二叉树 void reBuildTree(vector pre, int begin1, int end1, \ vector in, int begin2, int end2) { if (pre.size() != in.size()) return ; int mid = begin2; while (begin1 < end1) { mi原创 2017-07-31 23:28:55 · 427 阅读 · 0 评论 -
【每日一题-15】二叉树非递归遍历&求两个集合的差集
实现二叉树的前序/中序/后序非递归遍历 #include struct Node { int val; struct Node* left; struct Node* right; }; //前序 void PreInorde(Node* root) { if (root == NULL) return; Node* cur = root; stack s; while (cu原创 2017-07-31 21:18:29 · 856 阅读 · 0 评论 -
【每日一题-14】完全二叉树&寻找最近公共节点
判断一棵树是否是完全二叉树 判断依据:完全二叉树的前k层都是满的,最后一层从左到右都是满的,如果不符合该规则则不是完全二叉树 struct TreeNode { int data; TreeNode* left; TreeNode* right; TreeNode(int val) : data(val) , left(NULL) , right(NULL) {} };原创 2017-07-31 19:38:07 · 937 阅读 · 0 评论 -
【每日一题-13】二叉树中查找节点/子树
在二叉树中查找一个节点 struct TreeNode { int data; TreeNode* left; TreeNode* right; TreeNode(int val) : data(val) , left(NULL) , right(NULL) {} }; bool FindNode(TreeNode* root, TreeNode* node) { if原创 2017-07-30 23:02:31 · 631 阅读 · 0 评论 -
【每日一题-12】平衡二叉树/镜像与杨氏矩阵查找
判断一棵二叉树是否是平衡二叉树 typedef struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; TreeNode(int data) : val(data) , left(NULL) , right(NULL) {} }Node; int TreeDepth(Node*原创 2017-07-29 21:25:43 · 630 阅读 · 0 评论 -
【每日一题-11】求二叉树高度/销毁一棵二叉树与链表翻转
求二叉树的高度 int TreeDepth(Node* root) { if (root == NULL) return 0; if (root->left == NULL&&root->right == NULL) return 1; int leftLen = TreeDepth(root->left); int rightLen = TreeDepth(root->righ原创 2017-07-29 21:13:08 · 424 阅读 · 0 评论 -
【每日一题-10】求第K层节点与求数组中出现一半的数
求二叉树第k层的节点个数 typedef struct Node { int val; struct Node* _left; struct Node* _right; Node(const int& data) :val(data) , _left(NULL) , _right(NULL) {} }Node; void _GetKLevelSize(Node* root原创 2017-07-29 21:01:54 · 275 阅读 · 0 评论 -
【每日一题-9】层序遍历与N!后的0的个数
实现一颗二叉树的层序遍历 typedef struct Node { int val; struct Node* left; struct Node* right; Node(const int& data) :val(data) , left(NULL) , right(NULL) {} }Node; template void ThiefOrder(Node* roo原创 2017-07-21 18:49:37 · 686 阅读 · 0 评论 -
【每日一题-8】出栈入栈合法性与二进制中1的个数
元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 #include #include #include using namespace std; template bool CheckStack(vector& in, vector& out) { if原创 2017-07-21 18:44:02 · 600 阅读 · 0 评论 -
【每日一题-7】min栈实现与第一次只出现两次的字符
实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) #include #include using namespace std; template class Stack { public: void Push(const T data) { s1.push(data); int top = s1.top();原创 2017-07-21 18:39:38 · 646 阅读 · 0 评论 -
【每日一题-6】栈和队列与替换空格
两个栈实现一队列 class Queue { void Push(int data) { inStack.push(data); } int Pop() { if (inStack.empty() && outStack.size()) return -1; if (!outStack.empty()) { while (!inStack.empty())原创 2017-07-18 10:07:12 · 591 阅读 · 0 评论 -
【每日一题-5】复杂链表的复制
逆序打印单链表 void ReversePrintList(listNode* pHead) { if (pHead == NULL) return NULL; ReversePrintList(pHead->next); cout next; }删除一个无头单链表的非尾节点 void DelNontaiNode(ListNode* pos) { ListNode* cur = N原创 2017-07-18 08:54:24 · 495 阅读 · 0 评论 -
【每日一题-4】链表相交问题
//判断两个链表是否相交,若相交,求交点。(假设链表不带环) PNode IsCrossWithCircle(PNode pHead1, PNode pHead2) { Node* pCur = pHead1; Node* pRet = pHead2; size_t size1 = Size(pHead1); size_t size2 = Size(pHead2); in原创 2017-07-17 00:09:48 · 410 阅读 · 0 评论 -
【每日一题-3】链表带环问题
判断链表是否带环?如果带环,环的长度是多少?环的入口节点是什么? struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) {} }; //判断链表是否带环? ListNode* IsLoop(ListNode* pHead) { if (NULL == pHea原创 2017-07-15 22:57:13 · 320 阅读 · 0 评论 -
【每日一题-2】链表基础面试题
1、查找链表的倒数第k个节点 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL||k==0) return NULL; ListNode* first=pListHead; ListNode*原创 2017-07-15 20:54:41 · 469 阅读 · 0 评论 -
【每日一题-1】有序链表合并与累加和问题
基础题——合并两个有序链表,合并以后的链表依旧有序。 附加题——实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。原创 2017-07-13 23:38:07 · 434 阅读 · 0 评论