二叉树
树将向量和列表的优点融合了起来
向量长于静态操作而列表长于动态操作,树则在某种程度上兼顾二者
树按照层次结构组织数据项
有根树
节点拥有孩子的个数为该节点的度数degree
归纳:一颗树的所含边数 = 所有节点的度数之和 = n - 1(n 为节点总数)
路径 + 环路
连通图:节点之间均有路径
无环图:不含环路
深度 + 层次
根节点的深度为0
题:
树的表示
父节点表示法
优点:查找父节点和根节点很方便
缺点:查找孩子节点和兄弟节点需要O(n)
孩子节点表示法
父亲孩子表示法
长子兄弟法
题:
二叉树
节点度数不超过2的树称为二叉树(binary tree)

真二叉树
不含度数为一的节点
多叉树->二叉树
题:
二叉树实现
高度更新
一个节点的高度 = 左子树或右子树中最大的高度 + 1
高度更新,更新当前节点及其历代祖先的高度
节点插入
题:
遍历规则
先序遍历
递归实现
迭代实现
实例
左侧链
先序遍历的宏观过程:自顶向下的依次访问左侧链上的沿途节点,再倒过来,自底向上地依次遍历各个层次上的每一颗右子树
题:
中序遍历
题:
后序遍历
迭代实现代码
表达式树
层次遍历
按照层次顺序访问
题
Huffman树
编码成本
Huffman算法
构造编码树
题