每日一题
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 · 275 阅读 · 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 · 427 阅读 · 0 评论 -
【每日一题-15】二叉树非递归遍历&求两个集合的差集
实现二叉树的前序/中序/后序非递归遍历#includestruct 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 评论 -
【每日一题-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;templatevoid 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#includeusing namespace std;templatebool CheckStack(vector& in, vector& out){ if原创 2017-07-21 18:44:02 · 599 阅读 · 0 评论 -
【每日一题-7】min栈实现与第一次只出现两次的字符
实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)#include#includeusing namespace std;templateclass 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 评论 -
【每日一题-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 评论 -
【每日一题-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 · 331 阅读 · 0 评论