二叉树节点度只能为0、1或2,BST校验依赖中序遍历单调性,完全二叉树需层序遍历检测“空后非空”,AVL树须后序递归同步计算高度与平衡性。
二叉树节点的度与变量分布判定,核心在于理解“度”的定义和不同结构对节点分布的约束。它不是泛泛而谈的树形检查,而是紧扣二叉树特有的左右区分性、递归结构性和编号连续性展开的校验逻辑。
节点的度必须严格为 0、1 或 2
二叉树中每个节点最多有两个子节点,因此其度只能是 0(叶子)、1(只有左或只有右)、2(左右都有)。出现度 ≥3 的节点,直接否定为二叉树。实际编码中需遍历每个节点统计其非空子指针个数:
- 若 left != null 且 right != null → 度 = 2
- 若仅 left 或仅 right 非空 → 度 = 1
- 若 left == null 且 right == null → 度 = 0
- 一旦发现某节点有三个及以上子指针(如多叉树结构误用),立即报错
排序二叉树(BST)依赖变量单调性校验
BST 不靠节点度判断,而靠值分布:对任意节点,其左子树所有值
- 初始化一个全局或引用传递的 prev = -∞
- 中序访问时,每到一个节点,检查是否 当前值 > prev;若不成立,说明顺序断裂,非 BST
- 更新 prev = 当前值,继续向右子树推进
- 该方法避免递归传区间,简洁高效,适合考研手写
完全二叉树依赖层次遍历中的“空断点”规则
完全二叉树的关键特征是:节点按层从左到右连续填充,不允许“有右无左”,更不允许“空后非空”。校验必须用队列做层序遍历:
- 将根入队,进入循环:出队一个节点 node
- 若 node 非空,将其 left 和 right(含 nullptr)依次入队
- 若 node 为空,则此后出队的所有节点都必须为空;一旦遇到非空节点,立刻判定失败
- 本质是捕捉“首次出现空节点”后的状态不可逆性
平衡二叉树(AVL)需同步计算高度与平衡标志
平衡性判定不能只看单层,必须自底向上获取左右子树的高度,并验证差值 ≤1。推荐后序递归写法,返回结构体或 pair:
- 空节点:height = 0,balanced = true
- 递归获取 leftHeight、leftBalanced 和 rightHeight、rightBalanced
- 当前高度 = max(leftHeight, rightHeight) + 1
- 当前平衡 = leftBalanced && rightBalanced && |leftHeight − rightHeight| ≤ 1
- 避免重复遍历,一次递归完成高度与平衡双重校验










