知识大全 数据结构考研分类复习真题 第六章 答案 (五)[13]
Posted 结点
篇首语:登山则情满于山,观海则意溢于海。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[13]相关的知识,希望对你有一定的参考价值。
[题目分析]二叉树顺序存储 是按完全二叉树的格式存储 利用完全二叉树双亲结点与子女结点编号间的关系 求下标为i和j的两结点的双亲 双亲的双亲 等等 直至找到最近的公共祖先
void Ancestor(ElemType A[] int n i j) //二叉树顺序存储在数组A[ n]中 本算法求下标分别为i和j的结点的最近公共祖先结点的值 while(i!=j) if(i>j) i=i/ ; //下标为i的结点的双亲结点的下标 else j=j/ ; //下标为j的结点的双亲结点的下标 printf( 所查结点的最近公共祖先的下标是%d 值是%d i A[i]);//设元素类型整型 // Ancestor
[题目分析]用二叉树表示出父子 夫妻和兄弟三种关系 可以用根结点表示父(祖先) 根结点的左子女表示妻 妻的右子女表示子 这种二叉树可以看成类似树的孩子兄弟链表表示法 根结点是父 根无右子女 左子女表示妻 妻的右子女(右子女的右子女等)均可看成兄弟(即父的所有儿子) 兄弟结点又成为新的父 其左子女是兄弟(父的儿子)妻 妻的右子女(右子女的右子女等)又为儿子的儿子等等 首先递归查找某父亲结点 若查找成功 则其左子女是妻 妻的右子女及右子女的右子女等均为父亲的儿子
BiTree Search(BiTree t ElemType father)//在二叉树上查找值为father的结点 if(t==null) return (null); //二叉树上无father结点 else if(t >data==father) return(t); //查找成功 p=Search(t >lchild father); p=Search(t >rchild father); //结束Search void PrintSons(BiTree t ElemType p) //在二叉树上查找结点值为p的所有的儿子 p=Serach(t p); //在二叉树t上查找父结点p if(p!=null) //存在父结点 q=p >lchild; q=q >rchild; //先指向其妻结点 再找到第一个儿子 while(q!=null) printf(q >data); q=q >rchild; //输出父的所有儿子 //结束PrintSons
cha138/Article/program/sjjg/201311/23729相关参考