二叉树——树和森林

树的存储结构:
双亲表示法:
用一组连续的空间存储的结点,同时在每个结点中,附设一个指示器指示其双亲结点在数组中的位置。
孩子表示法:
把每个结点的孩子结点排列起来存储成一个单链表。所以n个结点就有n个链表;
如果是叶子结点,那这个结点的孩子单链表就是空的;
然后n个单链表的的头指针又存储在一个顺序表(数组)中。

孩子兄弟表示法 :
	顾名思义就是要存储孩子和孩子结点的兄弟
	具体来说,就是设置两个指针,分别指向该结点的第一个孩子结点和这个孩子结点的右兄弟结点。 

在这里插入图片描述
森林转换成二叉树的画法:
① 将森林中的每棵树转换成相应的二叉树;
② 每棵树的根也可视为兄弟结点,在每棵树之间加一根连线;
③ 以第一棵树的根为轴心顺时针旋转 45° 。

树的遍历
是指用某种方式访问树中的每个结点,且仅访问一次。主要有两种方式:
(1) 先根遍历。
若树非空,先访问根结点,再依次遍历根结点的每棵子树
遍历子树时仍遵循先根后子树的规则。其遍历次序与这棵树对应二叉树的先序序列相同。
(2) 后根遍历。
若树非空,先依次遍历根结点的每棵子树,再访问根结点
遍历子树时仍遵循先子树后根的规则。其遍历次序与这棵树对应二叉树的中序序列相同

森林的两种遍历方法:
(1) 先序遍历。(先根,然后再子树)
若森林非空,先访问森林中第一棵子树的根结点,再先序遍历第一棵树
中根结点的子树森林,再先序遍历除去第一棵树之后剩余的树构成的森林。

(2) 中序遍历。(先子树,然后再根)
		若森林非空,先中序遍历森林中第一棵树的根结点的子树森林,再访问 

第一棵树的根结点,再中序遍历除去第一棵树之后剩余的树构成的森林。
二叉树——树和森林_第1张图片

你可能感兴趣的:(数据结构)