知识大全 数据结构考研分类复习真题 第六章 答案 (五)[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相关参考