将普通二叉树转换成“孩子兄弟”表示法
孩子兄弟表示法:采用的是链式存储结构,其存储树的实现思想是:从树的根节点开始,依次用链表存储各个节点的孩子节点和兄弟节点。
因此,该链表中的节点应包含以下 3 部分内容:
- 节点的值;
- 指向孩子节点的指针;
- 指向兄弟节点的指针;
孩子指针域 | 数据域 | 兄弟指针域 |
---|
以某年软件评测师的一题选择题为例
25.对于一般的树结构,可以采用孩子-兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子-兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是(25)。
A.结点D与结点E是兄弟
B.结点D是结点E的祖父结点
C.结点E的父结点与结点D的父结点是兄弟
D.结点E的父结点与结点D是兄弟
解析:首先,题目给出的是转换后的“孩子兄弟表示法”。我们可以根据逆推得到原二叉树,再根据得到的原二叉树得出选项D。
逆推出来的原二叉树:
可以两图进行对比,普通二叉树转换成“孩子兄弟”表示法:
从根结点开始,每个结点的左分支是孩子,右分支是兄弟,(如果有两个以上的兄弟,可以一直分左分支下去)所以,只需要记住“孩子兄弟”表示法就是:左孩子右兄弟。即可。