2018年12月26日

包含min函数的栈

摘要: 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数 思路 不可以用个中间变量来存放最小值,这种在对于如栈时最小值的更新是可以起到作用的,但是出栈是若果包含该最小值的变量弹出了,最小值就无法实现更新了,所以用一个辅助栈来实现最小值的更新 辅助栈(m_min)工作原理: 入栈 数 阅读全文

posted @ 2018-12-26 23:00 tianzeng 阅读(117) 评论(0) 推荐(0) 编辑

顺时针打印矩阵

摘要: 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵,则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 把矩阵看成由若干个顺时针方向的圈组成,循环打印矩阵中的每个圈,每次循环打印一个圈。 打印一圈通常分为四步,设置四 阅读全文

posted @ 2018-12-26 21:06 tianzeng 阅读(172) 评论(0) 推荐(0) 编辑

对称的二叉树

摘要: 题目 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 思路 在已学习的二叉树遍历中,都是先遍历左子树,最后遍历右子树,我们可以定义一种算法,先遍历父节点,再遍历左子树,最后遍历右子树,称这种算法为对称遍历算法 如果前序遍历与对称遍历得到的 阅读全文

posted @ 2018-12-26 17:57 tianzeng 阅读(148) 评论(0) 推荐(0) 编辑

二叉树的镜像

摘要: 题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像 思路 先序遍历原二叉树的每个节点,如果遍历到的结点有子结点,就交换它的两个子结点。 递归遍历每个节点的子节点,同样,如果遍历到的子节点有子节点,就交换它的两个子节点。 当交换完所有非叶子 阅读全文

posted @ 2018-12-26 17:29 tianzeng 阅读(575) 评论(0) 推荐(0) 编辑

树的子结构

摘要: 题目 输入两颗二叉树A,B,判断B是不是A的子结构。 思路 首先在A树中进行遍历,找到值与B树相同的根节点 以A树中找到的根节点进行遍历,判断是否与B树有相同的结构 /** * Definition for a binary tree node. * struct TreeNode { * int 阅读全文

posted @ 2018-12-26 17:06 tianzeng 阅读(150) 评论(0) 推荐(0) 编辑

合并两个排序的链表

摘要: 题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的。 思路 两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中。 /** * Definition for singly-linked list. * struct List 阅读全文

posted @ 2018-12-26 16:09 tianzeng 阅读(126) 评论(0) 推荐(0) 编辑

反转链表

摘要: 题目 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思路 定义三个指针,指向当前节点的指针(pnode),指向当前节点的下一结点的指针(pnext),指向当前节点的前一节点的指针(pre,第一次初始化为空) 首先记录当前节点的下一结点,以为这里是更改链表中的指针,使pno 阅读全文

posted @ 2018-12-26 15:22 tianzeng 阅读(137) 评论(0) 推荐(0) 编辑

链表中环的入口节点

摘要: 题目 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 确定是否存在环。用两个指针,一快一慢,快的追上慢的,则包含环 找到环的入口。让快的指针先走n(环的长度)步,然后快慢指针以相同的速度向前推进,两指针相遇,则是环的入口 确定环的长度。定义两个指针,一块一慢,相遇时 阅读全文

posted @ 2018-12-26 11:35 tianzeng 阅读(126) 评论(0) 推荐(0) 编辑

导航