niusouti.com
更多“树的孩子兄弟表示法是一种二叉链表表示法。”相关问题
  • 第1题:

    下列存储表示中,哪一个不是树的存储形式()。

    :A双亲表示法

    B孩子链表表示法

    C顺序存储表示法

    D孩子兄弟表示法


    参考答案:C

  • 第2题:

    下列存储形式中,哪个不是树的存储形式( )。

    A.双亲表示法

    B.位示图法

    C.广义表表示法

    D.孩子兄弟表示法


    正确答案:B
    解析:位示图法是利用一串二进制位的值来反映磁盘空间的分配使用情况。每一个磁盘物理块对应1个二进制位,如果物理块空闲,则相应二进制位为0;如果物理块已被分配,则相应的二进制位为1。

  • 第3题:

    请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。

    [说明]

    一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。

    函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。

    对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。

    Bool、Status类型定义如下:

    树的二叉链表节点定义如下:

    [C函数程序]


    正确答案:这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时每个节点都进出队列一次节点出队列时进行访问。其过程是首先令树根节点入队若是森林(树根之间互为兄弟)接着则令其余树的根节点入队然后在队列非空的情况下队头节点出队访问该节点同时令其孩子节点入队。以此类推直到队列为空。 在试题所给出的[C函数程序]中代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能因此(1)空缺处所填写的内容是“EnQueue(&tempQ root)”。 采用二叉树存储树结构时其右分支表示兄弟关系因此队头节点出队时应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能因此(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是当队列非空时应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ&ptr)”。 若一个节点不存在孩子则其firstchild指针域为空也无须令其孩子节点入队列。因此(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之若一个节点有孩子则应首先令其第一个孩子节点入队列然后通过右分支链使其他孩子节点入队列。因此(6)空缺处所填写的内容是“EnQueue(&tempQptr->firstchild)”(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。
    这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时,每个节点都进出队列一次,节点出队列时进行访问。其过程是,首先令树根节点入队,若是森林(树根之间互为兄弟),接着则令其余树的根节点入队,然后在队列非空的情况下,队头节点出队,访问该节点同时令其孩子节点入队。以此类推,直到队列为空。 在试题所给出的[C函数程序]中,代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能,因此(1)空缺处所填写的内容是“EnQueue(&tempQ, root)”。 采用二叉树存储树结构时,其右分支表示兄弟关系,因此队头节点出队时,应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能,因此,(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此,就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空,即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是,当队列非空时,应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ,&ptr)”。 若一个节点不存在孩子,则其firstchild指针域为空,也无须令其孩子节点入队列。因此,(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之,若一个节点有孩子,则应首先令其第一个孩子节点入队列,然后通过右分支链使其他孩子节点入队列。因此,(6)空缺处所填写的内容是“EnQueue(&tempQ,ptr->firstchild)”,(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。

  • 第4题:

    在下列存储形式中,哪一个不是树的存储形式? ( )

    A.孩子兄弟表示法

    B.双亲表示法

    C.顺序存储表示法

    D.孩子链表表示法


    正确答案:C

  • 第5题:

    下列存储形式中,()是树的存储形式。

    • A、双亲表示法
    • B、左子女右兄弟表示法
    • C、广义表表示法
    • D、顺序表示法

    正确答案:A,B,D

  • 第6题:

    若采用孩子兄弟链表作为树的存储结构,则树的先根遍历应采用二叉树的()。

    • A、层次遍历
    • B、先序遍历
    • C、中序遍历
    • D、后序遍历

    正确答案:B

  • 第7题:

    在下列存储形式中,()不是树的存储形式。

    • A、双亲表示法
    • B、顺序存储表示
    • C、孩子兄弟表示法
    • D、孩子链表表示法

    正确答案:D

  • 第8题:

    下列存储形式中,()不是树的存储形式。

    • A、双亲表示法
    • B、左子女右兄弟表示法
    • C、广义表表示法
    • D、顺序表示法

    正确答案:C

  • 第9题:

    填空题
    利用树的孩子兄弟表示法存储,可以将一棵树转换成()

    正确答案: 一棵二叉树
    解析: 暂无解析

  • 第10题:

    单选题
    在具有n个结点的二叉树的二叉链表表示中,2n个孩子指针域中,只用到()个域。
    A

    n

    B

    n-1

    C

    n+1

    D

    2n


    正确答案: D
    解析: 暂无解析

  • 第11题:

    单选题
    在下列存储形式中,()不是树的存储形式。
    A

    双亲表示法

    B

    顺序存储表示

    C

    孩子兄弟表示法

    D

    孩子链表表示法


    正确答案: B
    解析: 孩子链表表示法、双亲表示法、孩子兄弟表示法是树的三种常用存储结构。   
    孩子链表表示法是树的一种链式存储结构。与二叉树的二叉链表存储方法类似,孩子链表表示法的基本思想是:树上的一个结点的内容(数据元素)以及指向该结点所有孩子的指针存储在一起以便于运算的实现。 
    双亲表示法是树上每个结点的孩子可以有任意多个,但双亲只有一个。因此,通过指向双亲的指针而将树中所有结点组织在一起形成一种存储结构是十分简洁的。树的这种存储表示方法称为双亲表示法。 
    孩子兄弟链表中所有存储结点的形式相同,均含三个域:数据域——用于存储树上结点中的数据元素;孩子域——用于存放指向本结点第一个孩子的指针;兄弟域——用于存放指向本结点下一个兄弟的指针。

  • 第12题:

    多选题
    下面属于常用的表示树的链表结构的有()。
    A

    双亲表示法

    B

    孩子表示法

    C

    孩子兄弟表示法

    D

    姐姐表示法


    正确答案: C,B
    解析: 暂无解析

  • 第13题:

    一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有【 】子女。


    正确答案:右
    右 解析:对于根结点没有兄弟,所以没有右子女。

  • 第14题:

    阅读以下说明、图和C代码。

    【说明】

    一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图10-8(a)所示的树的孩子-兄弟表示如图10-8(b)所示。

    函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对图10-1所示的树进行层序遍历时,结点的访问次序为D B A E F P C。

    对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如下表所示:

    Bool、Status类型定义如下:

    typedef enum { FALSE=0,TRUE=1 } Bool;

    typedef enum { VERFLOW=-2,UNDERFLOW=-1,ERROR=0,OK=1}Status;

    树的二叉链表结点定义如下:

    typedef struct Node {

    char data;

    struct Node *firstchild,*nextbrother;

    } Node,*TreeNode;

    【函数】

    Status LevelTraverse ( TreeNode root )

    { /*层序遍历树,树采用孩子-兄弟表示法,root是树根结点的指针*/

    Queue tempQ;

    TreeNode ptr,brotherptr;

    if (! root)

    return ERROR;

    InitQueue(&tempQ);

    (1);

    brotherptr = root -> nextbrother;

    while (brotherptr) {

    EnQueue(&tempQ,brotherptr);

    (2);

    }/*end-while*/

    while((3)){

    (4);

    printf("%c\t",ptr->data);

    if((5))continue;

    (6);

    brotherptr = ptr->firstchild->nextbrother;

    while (brotherptr) {

    EnQueue(&tempQ,brotherptr);

    (7);

    }/*end-while*/

    }/*end-while*/

    return OK;

    }/*LevelTraverse*/


    正确答案:(1)EnQueue(&tempQroot) (2)brotherptr=brotherptr->nextbrother (3)!IsEmpty(tempQ)或其等价形式 (4)DeQueue(&tempQ&ptr) (5)!ptr->firstchild或其等价形式 (6)EnQueue(&tempQptr->firstchild) (7)brotherptr=brotherptr->nextbrother
    (1)EnQueue(&tempQ,root) (2)brotherptr=brotherptr->nextbrother (3)!IsEmpty(tempQ),或其等价形式 (4)DeQueue(&tempQ,&ptr) (5)!ptr->firstchild,或其等价形式 (6)EnQueue(&tempQ,ptr->firstchild) (7)brotherptr=brotherptr->nextbrother 解析:本题考查树结构的存储及遍历运算。
    借助队列结构对树进行层序遍历时,每个结点都进出队列一次,结点出队列时进行访问。其过程是:首先令树根结点入队,若是森林(树根之间互为兄弟),接着则令其余树的根结点入队,然后在队列非空的情况下,队头结点出队,访问该结点同时令其孩子结点入队。以此类推,直到队列为空。
    队列可以保证访问结点时按照层次和自左至右的顺序。
    函数中,代码“InitQueue(&tempQ);(1)”初始化队列并令根结点入队列,因此空(1)处应填入“EnQueue(&tempQ,root)”。
    采用二叉树存储树结构时,其右分支表示兄弟关系,因此队头结点出队时,应沿右分支将队头结点的所有孩子依次加入队列。以下代码处理第一棵树的兄弟结点,如下:
    while (brotherptr){
    EnQueue(&tempQ,brotherptr);
    (2);
    }/*end-while*/
    因此,空(2)处应填入“brotherptr=brotherptr -> nextbrother”。这样,就完成了第一层结点的处理。
    显然,空(3)处应判断队列是否为空,即填入“!IsEmpty(tempQ)”。队列非空的情况下,令队头元素出队列,即空(4)处应填入“DeQueue(&tempQ,&ptr)”。这是使用队列或栈结构存储元素以实现某种运算的基本特点。
    若一个结点不存在孩子,则其firstchild指针域为空,也无需令其孩子结点入队列。
    因此,空(5)处应填入“!ptr->firstchild”。反之,若一个结点有孩子,则应首先令其第一个孩子结点入队列,然后通过右分支链使其他孩子结点入队列。因此,空(6)处应填入“EnQueue(&tempQ,ptr->firstchild)”,空(7)处应填入“brotherptr =brotherptr->nextbrother”。

  • 第15题:

    一棵树按照左子女一右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有【 】子女。


    正确答案:右
    右 解析:由于根结点没有兄弟,所以没有右子女。

  • 第16题:

    设某二叉树采用二叉链表表示(即结点的两个指针分别指示左、右孩子)。当该二叉树包含 k 个节点时,其二叉链表节点中必有(59)个空的孩子指针。

    A.k-1
    B.K
    C.k+1
    D.2k

    答案:C
    解析:

  • 第17题:

    利用树的孩子兄弟表示法存储,可以将一棵树转换成()


    正确答案:一棵二叉树

  • 第18题:

    简述二叉链表表示和三叉链表表示的二叉树中结点的结构。


    正确答案:在二叉链表表示中,双亲结点有指向其孩子结点的指针,而孩子结点不包含指向其双亲结点的指针;在三叉链表表示中,双亲结点有指向其孩子结点的指针,而孩子结点也包含指向其双亲结点的指针。

  • 第19题:

    在具有n个结点的二叉树的二叉链表表示中,2n个孩子指针域中,只用到()个域。

    • A、n
    • B、n-1
    • C、n+1
    • D、2n

    正确答案:B

  • 第20题:

    下面属于常用的表示树的链表结构的有()。

    • A、双亲表示法
    • B、孩子表示法
    • C、孩子兄弟表示法
    • D、姐姐表示法

    正确答案:A,B,C

  • 第21题:

    单选题
    若采用孩子兄弟链表作为树的存储结构,则树的先根遍历应采用二叉树的()。
    A

    层次遍历

    B

    先序遍历

    C

    中序遍历

    D

    后序遍历


    正确答案: A
    解析: 暂无解析

  • 第22题:

    问答题
    简述二叉链表表示和三叉链表表示的二叉树中结点的结构。

    正确答案: 在二叉链表表示中,双亲结点有指向其孩子结点的指针,而孩子结点不包含指向其双亲结点的指针;在三叉链表表示中,双亲结点有指向其孩子结点的指针,而孩子结点也包含指向其双亲结点的指针。
    解析: 暂无解析

  • 第23题:

    多选题
    下列存储形式中,()是树的存储形式
    A

    双亲表示法

    B

    左子女右兄弟表示法

    C

    广义表表示法

    D

    顺序表示法


    正确答案: A,D
    解析:

  • 第24题:

    单选题
    下列存储形式中,()不是树的存储形式。
    A

    双亲表示法

    B

    左子女右兄弟表示法

    C

    广义表表示法

    D

    顺序表示法


    正确答案: C
    解析: 暂无解析