1、给定一个二叉树,找出其最大深度。(104题)
递归,求左右子树的最大值。
2、给定一个二叉树,判断它是否是高度平衡的二叉树。(110题)
在上一题的基础上加了个判断,如果左右子树差超过1,全局变量变为0.
3、给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。(102题)
队列。关键:每一层记录当前队列的长度。
4、给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)(107题)
上一题的数组翻转就行。
5、给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。(103题)
用一个flag记录是奇数层还是偶数层。
6、给定一个二叉树,判断其是否是一个有效的二叉搜索树。(98题)
中序遍历。
7、给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。(701题)
全局变量pre定义父节点,flag定义要插入的节点是父节点的左孩子还是右孩子。
8、给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。(236题)
2种情况:
1)node的左边有p,右边有q,node是目标节点;(p,q同理)
2)node是p,q在node的左(右)边;(p,q同理)
9、二叉树的最大路径和(124题)
计算每个节点能带来的贡献,计算贡献的时候只能加左孩子的贡献或者右孩子的贡献,但是计算最后的路径和时需要加上两个孩子的贡献。