树是节点和连接节点的边的集合。
节点:树的每一个数据元素称为一个节点,节点是树的基本构成部分。
边:边有方向,连接两个节点,表示它们之间的联系。指向该节点的边称为入边,从该节点指向其他节点的边称为出边。
根节点:树中唯一没有入边节点。
路径:由边连接起来的节点的有序排列。
子节点:一个节点是它入边所连接的节点的子节点。
父节点:一个节点是它出边所连接的所有节点的父节点。
兄弟节点:同一个节点的所有子节点互为兄弟节点。
子树:一个父节点的某个子节点的所有边和后代节点所构成的集合。
叶节点:没有子节点的节点称为叶节点。
层数:从根节点到该节点的路径中的边的数目。
高度:所有节点的层数的最大值。
树的特征
1.有一个根节点。
2.除根节点外,每个节点都有一条边与它唯一的父节点相连。
3.可以沿着唯一路径从根节点到每个子节点。
二叉树
每个节点最多有两个子树的有序树。
二叉树是有序的,可以为空或一个根节点以及两个分别称为左子树和右子树的互不相交的二叉树组成。
二叉树的遍历
先序遍历:ABDHIECFG
中序遍历:HDIBEAFCG
后序遍历:HIDEBFGCA
Python实现二叉树
tree=['A', ['B', ['D', ['H',[],[]], ['I',[],[]] ], ['E',[],[]] ], ['C', ['F',[],[]], ['G',[],[]] ] ] def preorder(tree): if tree!=[]: print(tree[0],end='') preorder(tree[1]) preorder(tree[2]) def inorder(tree): if tree!=[]: inorder(tree[1]) print(tree[0],end='') inorder(tree[2]) def postorder(tree): if tree!=[]: postorder(tree[1]) postorder(tree[2]) print(tree[0],end='') preorder(tree) print("先序遍历") inorder(tree) print("中序遍历") postorder(tree) print("后序遍历")