题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印 思路:典型的队列使用 void PrintFromTopToBottom(TreeNode* root) { if(root==nullptr) return ; queue<TreeNode*> q; q.push(root); while(!q.empty()){ TreeNode* node = q.front(); q.pop(); cout<<node->val<<" "; if(node->left!=nullptr) q.push(node->left); if(node->right!=nullptr) q.push(node->right); } } 拓展1: 分层从
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1). 思路:对于栈,要在O(1)时间内获
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左
题目:操作给定的二叉树,将其变换为源二叉树的镜像 如上图所示,树的镜像是将每个节点的左右子树交换,因此,对于每个节点只需要交换左右子树的指针,
题目:输入两棵二叉树A,B,判断B是不是A的子结构. 如上图,其中B为A的子结构. 思路: 判断是否为子树,首先需要定位到子树的根节点,然后对两颗
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路:对于两个递增的链表合并,合并后仍递增
题目:输入一个链表,反转链表后,输出新链表的表头. 思路一:链表反转,需将节点指向改变. 可以每次取下一个节点向之前的节点中插入,采用头插法实现
题目:输入一个链表,输出该链表中倒数第k个结点. 链表长度未知,可以西安遍历一次得到链表长度,然后可计算出移动多少步. 然后这样做相当于遍历两次
题目一: 求斐波那契数列的第n项. 斐波那契数列公式: $$f(0)=0$$ $$f(1)=1$$ $$f(n)=f(n-1) + f(n-2),n>1$$ 对于斐波那契数列,学过程序语言的应该都知道. 教学时基本都是使用它来说明递归,导致
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使所有奇数位于数组的前半部分,所有偶数位于数组后半部分. 思路:交换数组元素,若