LeetCode #501:Find Mode In BST(查找二叉搜索树的众数)

题目描述

本题属于简单题,只需要中序遍历两次分别找出最大频率、将最大频率的数加入结果集即可(二叉搜索树的中序遍历是有序的)。但若要使用一次遍历就得到答案,就必须设计一系列辅助变量和策略。

阅读全文

LeetCode #101:Symmetric Tree(对称二叉树)

题目描述

本题的思路为比较一棵二叉树的两个子树的里侧与外侧的元素是否相等。若采用递归算法,只能同时对左右子树进行后序遍历,通过两个递归函数的返回值判断两个子树的内侧节点和外侧节点是否相等(对左侧子树的遍历顺序是左右中,对右侧子树的遍历顺序是右左中)。

阅读全文

LeetCode #71:Simplify Path(简化路径)

题目描述

在 *nix 操作系统中,系统对当前目录的管理就是通过栈来实现的,本问题就是对这一过程的模拟。思路是先将 path 串根据 “/” 分割,再对分割出来的子串根据 “.” “..” 等规则进行操作。由于 C++ 的 string 没有原生的 split 函数,这里采用 stringstream 对象和 getline() 巧妙实现了这一功能。

阅读全文

LeetCode #347:Top K Frequent Elements(前K个高频元素)

题目描述

本题的思路不难,先用 map 统计各个元素出现的频率,再用小顶堆(或大顶堆)找出频率前 k 的元素。在实现的过程中会涉及到对 C++ map、priority_queue、pair 等 STL 库的用法,之前对这块知识有些遗忘,特此记录。

阅读全文