树
===================我是分割线======================
1. 定义:
一些结点的集合,集合可以为空。定义树的自然方式是递归的方法。
2. 相关概念:
根(root)、边(edge)、儿子(child)、父亲(parent)
叶结点(leaf):没有子结点
兄弟结点(sibling):有共同的父结点
路径(path)、路径长(length)、深度(depth):root的深度为0
祖先(ancestor)、真祖先(proper ancestor)
3. 结点结构:
1 struct TreeNode { 2 object element; 3 TreeNode* leftChild; 4 TreeNode* rightChild; 5 };
4. 遍历
①先序遍历(先访问root,然后访问左子树,最后访问右子树)
②中序遍历(先访问左子树,然后访问root,最后访问右子树)
③后序遍历(先访问左子树,然后访问右子树,最后访问root)
④广度优先遍历
⑤深度优先遍历
5.应用
①文件结构的底层实现
②STL 中的set、map底层实现