type
status
date
slug
summary
tags
category
icon
password
Property
区间元素查找
题目:给定二叉搜索树的根结点
root
,返回值位于范围 [low, high]
之间的所有结点的值的和。示例:
验证二叉搜索树
题目:给你一个二叉树的根节点
root
,判断其是否是一个有效的二叉搜索树示例:
子树问题
题目:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)。B是A的子结构, 即A中有出现和B相同的结构和节点值。
最近的公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先
示例:
根据若
root
是p,q
的 最近公共祖先 ,则只可能为以下情况之一:p
和q
在root
的子树中,且分列root
的异侧(即分别在左、右子树中)
p=root
,且q
在root
的左或右子树中
q=root
,且p
在root
的左或右子树中
镜像翻转
题目:给一棵二叉树的根节点
root
,翻转这棵二叉树,并返回其根节点。示例:
对称二叉树
题目:给你一个二叉树的根节点
root
, 检查它是否轴对称。示例:
根据前序遍历和中序遍历重建二叉树
题目:给定两个整数数组
preorder
和 inorder
,其中 preorder
是二叉树的先序遍历, inorder
是同一棵树的中序遍历,请构造二叉树并返回其根节点示例:
- 二叉树前序遍历的顺序为:根左右
- 二叉树中序遍历的顺序为:左根右
递归建立整颗二叉树:先创建根节点,然后递归创建左右子树,并让指针指向两颗子树
- 先利用前序遍历找根节点:前序遍历的第一个数就是根节点的值
- 在中序遍历中找到根节点的位置
pos
,则pos
左边是左子树的中序遍历,右边是右子树的中序遍历
- 假设左子树的中序遍历的长度是
k
,则在前序遍历中,根节点后面的k
个数,是左子树的前序遍历,剩下的数是右子树的前序遍历
- 有了左右子树的前序遍历和中序遍历,可以先递归创建出根节点,然后再递归创建左右子树,再将这两颗子树接到根节点的左右位置
从中序与后序遍历序列构造二叉树
题目:给定两个整数数组
inorder
和 postorder
,其中 inorder
是二叉树的中序遍历, postorder
是同一棵树的后序遍历,请你构造并返回这颗二叉树 示例:
- 二叉树中序遍历的顺序为:左根右;
- 二叉树后序遍历的顺序为:左右根;
可以递归建立整棵二叉树:即先创建根节点,然后递归创建左右子树,并让指针指向两棵子树。
判断二叉树是否为平衡树
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。一棵高度平衡二叉树定义为:二叉树每个节点的左右两个子树的高度差的绝对值不超过1 。
示例:
求中序遍历倒数第k个节点/二叉搜索树的第k大节点
题目:给定一棵二叉搜索树,请找出其中第
k
大的节点的值。示例:
二叉搜索树中第K小的元素:
最小高度树
题目:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树
示例:
中序遍历,总是选择中间位置左边的数字作为根节点
二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回
true
,否则返回 false
。假设输入的数组的任意两个数字都互不相同。示例:
参考以下这颗二叉搜索树:
二叉搜索树中的中序后继
题目:
给定一棵二叉搜索树和其中的一个节点
p
,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null
。节点 p
的后继是值比 p.val
大的节点中键值最小的节点,即按中序遍历的顺序节点 p
的下一个节点。示例: