
每日一题
double_happiness
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【每日一题-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 · 288 阅读 · 0 评论 -
【每日一题-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 · 467 阅读 · 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 · 898 阅读 · 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 · 972 阅读 · 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 · 675 阅读 · 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 · 716 阅读 · 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 · 630 阅读 · 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 · 694 阅读 · 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 · 620 阅读 · 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 · 666 阅读 · 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 · 449 阅读 · 0 评论 -
【每日一题-17】线索化二叉树与单例模式
将二叉搜索树转换成一个排序的双向链表。提示:要求不能创建任何新的结点,只能调整树中结点指针的指向,也就是left当prev,right当next。--中序线索化的变型。 struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; }; TreeNode* TreeToList(TreeNode* ro原创 2017-08-01 16:52:03 · 363 阅读 · 0 评论