589. N叉的前序遍历
code
1  | class Solution {  | 
897. 递增顺序查找树
code
1  | class Solution {  | 
剑指 Offer 54. 二叉搜索树的第k大节点
code
1  | class Solution {  | 
110. 平衡二叉树
code
1  | class Solution {  | 
112. 路径总和
code
1  | class Solution {  | 
官方题解bfs;
1  | class Solution {  | 
1022. 从根到叶的二进制数之和
code
1  | class Solution {  | 
和上一题类似,显然这题也可以用bfs
606. 根据二叉树创建字符串
code
这题有点垃圾,题意含糊不清;
1  | class Solution {  | 
617. 合并二叉树
code
1  | class Solution {  | 
104. 二叉树的最大深度
code
1  | class Solution {  | 
当然还可以用bfs求;
102. 二叉树的层序遍历
code
1  | class Solution {  | 
dfs版
1  | class Solution {  | 
107. 二叉树的层序遍历 II
1  | class Solution {  | 
226. 翻转二叉树
code
1  | class Solution {  | 
235. 二叉搜索树的最近公共祖先
code
官方题解,需要注意这是一颗二叉搜索树
1  | class Solution {  | 
100. 相同的树
code
1  | class Solution {  | 
530. 二叉搜索树的最小绝对差
code
1  | class Solution {  | 
404. 左叶子之和
code
1  | class Solution {  | 
965. 单值二叉树
code
1  | class Solution {  | 
669. 修剪二叉搜索树
这里注意引用的使用,引用和指针是不一样的;把dfs函数里的*、&改成*就错了;
code
1  | class Solution {  | 
993. 二叉树的堂兄弟节点
code
啊啊啊,看我这丑陋的代码,太糟糕了;
1  | class Solution {  | 
653. 两数之和 IV - 输入 BST
code
1  | class Solution {  | 
543. 二叉树的直径
code
dfs版
1  | class Solution {  | 
671. 二叉树中第二小的节点
题解
对于这颗特殊的二叉树,需要求第二小的数;
由题意,根一定是最小的,记录下根的数值\(a\),搜索这棵树,找满足大于\(a\)的最小值;
一开始思路错了,其实如果在搜索过程中把子树的最小值返回也是一样的,如果根的两个子树的最小值相同,那就需要递归的到两颗子树里面找;
注意下面代码的第三行minm = 1ll << 32,因为minm是long long,如果是int,左移最多只能进行31次,否则会报错;因此需要写成1ll;
code
1  | class Solution {  | 
637. 二叉树的层平均值
code
1  | class Solution {  | 
559. N 叉树的最大深度
code
bfs
1  | class Solution {  | 
dfs
1  | class Solution {  | 
面试题 04.02. 最小高度树
code
1  | class Solution {  | 
700. 二叉搜索树中的搜索
code
1  | class Solution {  | 
938. 二叉搜索树的范围和
code
1  | class Solution {  | 
111. 二叉树的最小深度
code
1  | class Solution {  | 
590. N叉树的后序遍历
code
1  | class Solution {  | 
872. 叶子相似的树
code
1  | class Solution {  | 
257. 二叉树的所有路径
使用to_string()将数字转化为字符串,(char)(number + '0')这种方法只使用于一位正数;
code
1  | class Solution {  | 
563. 二叉树的坡度
code
1  | class Solution {  | 
572. 另一个树的子树
写了一个比较好想的方法,官方题解放了kmp、树哈希之类的;
code
1  | class Solution {  | 
236. 二叉树的最近公共祖先
code
写了一个比较笨的方法,就是统计根节点到要查询的节点的路径,然后从根节点进行比较,找到第一个不同的父节点之前的父节点即为答案;
1  | class Solution {  | 
这是官方解,当发现p和q分别位于某个子树的两个分支里时,那么当前节点就是他们的最近公共祖先;
还一种方法是用map记录路径;
1  | class Solution {  |