这里的树并不特指二叉树。
树有三种常见的表示方法:双亲表示法、孩子表示法、孩子兄弟表示法。
假设我们有这么一棵树:
接下来,我们用三种不同的方式表示它。
描述:用一组连续空间存储树的节点,每个节点中附加一个指示器,指向父节点所在位置。
对于上面那棵树,我们可以表示为:
评价:这种存储方式很容易获取某个节点父节点,但是获取其子节点就得整个结构遍历一遍。
描述:用一组连续空间存储树的节点,每个节点中附加一个指针,指向其子节点形成的单链表。
对于上面那棵树,我们可以表示为:
评价:这种存储结构很容易获取某个节点的子节点,但是获取其父节点就得整个结构遍历一遍了。
我们可以结合双亲表示法和孩子表示法,产生如下结果:
描述:以二叉链表作为存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。(左孩子,右兄弟)
对于上面那棵树,我们可以表示为:
这种表示方式比较常用。
由上面我们已经知道:任何一棵树都可以通过孩子兄弟表示法表示为二叉树。而且要注意到,表示成二叉树的树的根节点的右子树必为空,如果我们把森林中所有树的根节点通过右链域连在一起,那么我们其实也就是用二叉树表示了森林!
看下面例子:
Ref http://blog.csdn.net/linraise/article/details/11745559 《数据结构》——严蔚敏
