树是一种非线性数据结构。树结构的基本单位是节点。节点之间的链接,称为分支(branch)。节点与分支形成树状,结构的开端,称为根(root),或根结点。根节点之外的节点,称为子节点(child)。没有链接到其他子节点的节点,称为叶节点(leaf)。如下图是一个典型的树结构:
每个节点可以用以下数据结构来表示:
class TreeNode {
int val; // 当前节点的值
List<Node> children; // 指向其儿子
}class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}剑指Offer 55. 二叉树的深度 (简单)
101. 对称二叉树 (简单)
226. 翻转二叉树 (简单)
543. 二叉树的直径 (简单)
662. 二叉树最大宽度 (中等)
971. 翻转二叉树以匹配先序遍历 (中等)
236. 二叉树的最近公共祖先 (中等)
98. 验证二叉搜索树 (中等)
701. 二叉搜索树中的插入操作 (中等)
110. 平衡二叉树 (简单)
107. 二叉树的层序遍历II (中等)
124. 二叉树中的最大路径和 (困难)