定义:A tree is a collection of nodes. The collection can be empty; otherwise, a tree consists of

  1. A tree is a collection of nodes. The collection can be empty; otherwise, a tree consists of
  2. and zero or more nonempty (sub)treesT1, ... , Tk, each of whose roots are connected by a directed edge from r

    子树不能相连,故每个节点都是某些子树的根

    \(N\)节点的树具有\(N-1\)条边

    默认根绘制在最顶端

概念:

  • 节点的度:节点的==子树个数==(与图的度不同)
  • 树的度:\(\max\limits_{\text{node}\in\text{tree}}\set{\text{degree(node)}}\)
  • 父亲:具有子树的节点
  • 孩子:父亲节点子树的根
  • 兄弟:同一个父亲的儿子
  • 叶子:度为0的节点(无孩子)
  • 路径:\(n_1\to n_k\)唯一路径
  • 路径长度:路径具有的边数
  • 深度:根到该节点唯一路径的长度
  • 高度:该节点到叶子节点最长路径的长度

    深度,高度可以以顶点个数衡量(此时Depth(root) = 1),也可以以边数衡量(此时Depth(root) = 0),默认按边数衡量

  • 树的高度:height(root) = depth(deepest leaf)
  • 祖先:根到该节点路径上的所有节点
  • 后代:子树中的全部节点

表示:

  • 链表:( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) )
  • 左儿子右兄弟:

    image.png|200

    image.png|300

  • 并查集:每个节点维护一个指向父亲的指针