摘要: 题目: 输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解答: BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前 阅读全文
posted @ 2020-05-06 20:00 梦醒潇湘 阅读(209) 评论(0) 推荐(0)
摘要: 题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解答: 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的 阅读全文
posted @ 2020-05-06 19:37 梦醒潇湘 阅读(184) 评论(0) 推荐(0)
摘要: 题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。 解答: 1 class Solution { 2 bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) 3 { 4 if (pRootB == NULL 阅读全文
posted @ 2020-05-06 18:39 梦醒潇湘 阅读(197) 评论(0) 推荐(0)
摘要: 题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解答: 3 4 /* 5 *解题思路: 6 *1、遍历链 阅读全文
posted @ 2020-05-06 17:23 梦醒潇湘 阅读(178) 评论(0) 推荐(0)
摘要: 题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解答: 1 // 中序遍历即可。只需要记录一个pre指针即可。 2 3 4 class Solution { 5 public: 6 TreeNode* Convert(Tre 阅读全文
posted @ 2020-05-06 17:03 梦醒潇湘 阅读(165) 评论(0) 推荐(0)
摘要: 题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解答: 思路: 设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口(结论2)。以下 阅读全文
posted @ 2020-05-06 16:30 梦醒潇湘 阅读(171) 评论(0) 推荐(0)