leetcode专题训练——二叉树题目汇总

1、给定一个二叉树,找出其最大深度。(104题)

递归,求左右子树的最大值。

leetcode专题训练——二叉树题目汇总_第1张图片

2、给定一个二叉树,判断它是否是高度平衡的二叉树。(110题)

在上一题的基础上加了个判断,如果左右子树差超过1,全局变量变为0.

leetcode专题训练——二叉树题目汇总_第2张图片

leetcode专题训练——二叉树题目汇总_第3张图片

3、给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。(102题)

队列。关键:每一层记录当前队列的长度。

leetcode专题训练——二叉树题目汇总_第4张图片

4、给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)(107题)

上一题的数组翻转就行。

leetcode专题训练——二叉树题目汇总_第5张图片

 

5、给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。(103题)

用一个flag记录是奇数层还是偶数层。

leetcode专题训练——二叉树题目汇总_第6张图片

 

6、给定一个二叉树,判断其是否是一个有效的二叉搜索树。(98题)

中序遍历。

leetcode专题训练——二叉树题目汇总_第7张图片

 

7、给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。(701题)

全局变量pre定义父节点,flag定义要插入的节点是父节点的左孩子还是右孩子。

leetcode专题训练——二叉树题目汇总_第8张图片

8、给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。(236题)

2种情况:

1)node的左边有p,右边有q,node是目标节点;(p,q同理)

2)node是p,q在node的左(右)边;(p,q同理)

leetcode专题训练——二叉树题目汇总_第9张图片

 

9、二叉树的最大路径和(124题)

计算每个节点能带来的贡献,计算贡献的时候只能加左孩子的贡献或者右孩子的贡献,但是计算最后的路径和时需要加上两个孩子的贡献。

leetcode专题训练——二叉树题目汇总_第10张图片

 

你可能感兴趣的:(c++)