一棵树的存储结构可以采用父结点表示法,即父指针数组表示法。试给出相应的类定义。其中,每个树
二叉树结点数值采用顺序存储结构,如图所示。
①画出二叉树表示。
②写出前序遍历,中序遍历和后序遍历的结果。
③写出值为c的结点的父结点及其左、右孩子。
④画出把此二叉树还原成森林的图。
一棵树的逻辑结构T=(K,R),其中K={A,B,C,D,E,F,G,H,I,J};R={r};r={<A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,G>,<D,I>,<D,J>,<G,H>}。请用树形表示法画出此树,并按根将树划分为子树,指出哪个结点是根,哪些结点是树叶,确定每个结点的层数和度数。最后指出树的高度。
关于堆的一些问题: (1)堆的存储表示是顺序的,还是链接的? (2)设有一个最小堆,即堆中任意结点的关键字均大于它的左孩子和右孩子的关键字。其具有最大值的元素可能在什么地方? (3)对n个元素进行初始建堆的过程中,最多做多少次数据比较(不用大O表示法)?
为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)。请填空。
struct link { char data;【 】;} node;
解题思路:本题就是在一个二叉链表中查找指定的结点x的过程。可以利用二叉树的任意一种遍历方法进行查找。这里利用先序遍历方法,首先判断当前结点是否是要查找的结点,如果是,则查找成功,返回结点的地址;如果不是,则分别到它的左子树和右子树中进行查找。
为建立如下图所示的存储结构(即每个结点两个域,p是指向结点的指针域,data用以存放整型数),请将定义补充完整。
p data a struct list { 【 】; int data;}a;
一棵树的广义表表示为a(b(c,d(e,f),g(h)),i(j,k(x,y))),结点d和x的层数分别为_____和_______。
若一棵树中有度数为1~m的各种结点数为n1,n2,…,nm(nm表示度数为m的结点个数),请推导出该树中共有多少个叶子结点n0的公式。