7 篇
常见数据结构专区
题目描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum,判断这棵树中是否存在一条从根节点到叶子节点的路径,使得路径上所有节点值之和恰好等于 targetSum。 这里的叶子节点指的是没有左右子节点的节点。只要存在任意一条满足条件的根到叶路径,就返回 true;如果所有路径都不满足,就返回 f
题目描述 给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 思路 站在右侧看二叉树,每一层只能看到最右边的那个节点。因此问题转化为:找出每一层的最后一个节点。 用 BFS 层序遍历,每次处理一整层的节点。遍历时记录当前层的节点总数 queueSize,当某个节
题目描述 给你一个二叉搜索树的根节点 root,返回树中任意两不同节点值之间的最小差值。 思路 BST 的中序遍历结果是严格递增序列,相邻节点之差一定是所有节点对中最小的,因此只需要在中序遍历过程中比较当前节点与前一个节点的差值即可。 用 prenode 记录上一个访问节点的值,初始化为 math.MinInt / 2
题目描述 给定一个非空二叉树的根节点 root,以数组的形式返回每一层节点的平均值。 思路 用 BFS 层序遍历,每次处理完整的一层。记录当前层的节点数 queueSize,遍历该层时累加所有节点值到 sum,最后将 sum / queueSize 追加到结果中。 每处理一个节点,把它的左、右子节点依次加入队列,保证下
题目描述 给你一个二叉树的根节点 root,判断其是否是一个有效的二叉搜索树。 有效 BST 要求:左子树所有节点严格小于当前节点,右子树所有节点严格大于当前节点,且所有子树也满足此性质。 思路 BST 的中序遍历结果是严格递增序列,因此只需对树做中序遍历,同时用 pre 记录上一个访问节点的值,若当前节点值 ≤ pr
题目描述 给你二叉树的根节点 root,返回其节点值的层序遍历结果,即逐层从左到右访问所有节点,每一层的节点值放在一个子数组中。 思路 BFS 层序遍历的经典模板。用队列维护当前层的所有节点,每次循环开始时记录 queueSize,表示当前层的节点数,然后只处理这么多个节点,处理完一层后 height 自增,进入下一层
题目描述 给你二叉树的根节点 root,返回其节点值的锯齿形层序遍历结果。即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行。 思路 在 102 题层序遍历的基础上加一个方向判断。用 height 记录当前层数(从 0 开始),偶数层从左往右正常追加,奇数层从右往左,只需在每层处理完后判断 heigh