二叉树理论基础
种类
- 满二叉树
- 完全二叉树(除了底层其他层都是满的,而且底层从左到右都是连续的)
- 二叉搜索树(只要求左节点<根节点<右节点)
- 平衡二叉搜索树(左子树和右子树高度的绝对值不能超过1)
存储方式
链式存储
用指针来指向下一个节点来存储
线式存储
用节点数组来存储,每个数组的下标对应其在树相应结构的位置
对于一个下标为i的节点,其左孩子为:2×i+1 右孩子为:2×i+2
遍历
深度优先
前,中,后序遍历
递归,迭代法都可实现
广度优先
层序遍历
迭代法
定义
* public 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;
* }
* }