知识大全 数据结构考研分类复习真题 第六章 答案 (五)[5]

Posted 结点

篇首语:知识为进步之母,而进步又为富强之源泉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[5]相关的知识,希望对你有一定的参考价值。

   .[题目分析]二叉树是递归定义的 以递归方式建立最简单 判定是否是完全二叉树 可以使用队列 在遍历中利用完全二叉树 若某结点无左子女就不应有右子女 的原则进行判断

  BiTree Creat()       //建立二叉树的二叉链表形式的存储结构  ElemType x BiTree bt;  scanf( %d &x);  //本题假定结点数据域为整型  if(x== ) bt=null;  else if(x> )  bt=(BiNode *)malloc(sizeof(BiNode));  bt >data=x; bt >lchild=creat(); bt >rchild=creat();    else error( 输入错误 )   return(bt);  //结束 BiTree  int JudgeComplete(BiTree bt)  //判断二叉树是否是完全二叉树 如是 返回 否则 返回   int tag= ; BiTree p=bt Q[]; // Q是队列 元素是二叉树结点指针 容量足够大  if(p==null) return ( );  QueueInit(Q); QueueIn(Q p);  //初始化队列 根结点指针入队  while (!QueueEmpty(Q))  p=QueueOut(Q);                                //出队  if (p >lchild && !tag) QueueIn(Q p >lchild);  //左子女入队  else if (p >lchild) return ;                //前边已有结点为空 本结点不空  else tag= ;                             //首次出现结点为空  if (p >rchild && !tag) QueueIn(Q p >rchild);  //右子女入队  else if (p >rchild) return ; else tag= ;   //while  return ;  //JudgeComplete

  [算法讨论]完全二叉树证明还有其它方法 判断时易犯的错误是证明其左子树和右子数都是完全二叉树 由此推出整棵二叉树必是完全二叉树的错误结论

cha138/Article/program/sjjg/201311/23735

相关参考